ZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3ludGF4L2ZvcnRyYW4udmltIGIvcnVudGltZS9zeW50YXgvZm9ydHJhbi52aW0KaW5kZXggM2QzMjNmYi4uYmNjNzdjNSAxMDA2NDQKLS0tIGEvcnVudGltZS9zeW50YXgvZm9ydHJhbi52aW0KKysrIGIvcnVudGltZS9zeW50YXgvZm9ydHJhbi52aW0KQEAgLTEsMTYgKzEsMTYgQEAKICIgVmltIHN5bnRheCBmaWxlCiAiIExhbmd1YWdlOglGb3J0cmFuOTUgKGFuZCBGb3J0cmFuOTAsIEZvcnRyYW43NywgRiBhbmQgZWxmOTApCi0iIFZlcnNpb246CTAuODgKKyIgVmVyc2lvbjoJMC44OQogIiBVUkw6CQlodHRwOi8vd3d3LnVuYi5jYS9jaGVtL2FqaXQvc3ludGF4L2ZvcnRyYW4udmltCi0iIExhc3QgQ2hhbmdlOgkyMDA4IE5vdiAwMQorIiBMYXN0IENoYW5nZToJMjAxMCBKdWx5IDIxCiAiIE1haW50YWluZXI6CUFqaXQgSi4gVGhha2thciAoYWppdCBBVCB1bmIuY2EpOyA8aHR0cDovL3d3dy51bmIuY2EvY2hlbS9haml0Lz4KLSIgVXNhZ2U6CURvIDpoZWxwIGZvcnRyYW4tc3ludGF4IGZyb20gVmltCisiIFVzYWdlOglGb3IgaW5zdHJ1Y3Rpb25zLCBkbyA6aGVscCBmb3J0cmFuLXN5bnRheCBmcm9tIFZpbQogIiBDcmVkaXRzOgogIiAgVmVyc2lvbiAwLjEgd2FzIGJhc2VkIG9uIHRoZSBmb3J0cmFuIDc3IHN5bnRheCBmaWxlIGJ5IE1hcmlvIEV1c2ViaW8gYW5kCiAiICBQcmViZW4gR3VsZGJlcmcuIFVzZWZ1bCBzdWdnZXN0aW9ucyB3ZXJlIG1hZGUgYnk6IEFuZHJlaiBQYW5qa292LAogIiAgQnJhbSBNb29sZW5hYXIsIFRob21hcyBPbHNlbiwgTWljaGFlbCBTdGVybmJlcmcsIENocmlzdGlhbiBSZWlsZSwKICIgIFdhbHRlciBEaWV1ZG9ubuksIEFsZXhhbmRlciBXYWduZXIsIFJvbWFuIEJlcnRsZSwgQ2hhcmxlcyBSZW5kbGVtYW4sCi0iICBhbmQgQW5kcmV3IEdyaWZmaXRocy4gRm9yIGluc3RydWN0aW9ucyBvbiB1c2UsIGRvIDpoZWxwIGZvcnRyYW4gZnJvbSB2aW0KKyIgIEFuZHJldyBHcmlmZml0aHMsIEpvZSBLcmFobiwgYW5kIEhlbmRyaWsgTWVyeC4KIAogIiBGb3IgdmVyc2lvbiA1Lng6IENsZWFyIGFsbCBzeW50YXggaXRlbXMKICIgRm9yIHZlcnNpb24gNi54OiBRdWl0IGlmIGEgc3ludGF4IGZpbGUgaXMgYWxyZWFkeSBsb2FkZWQKQEAgLTc0LDcgKzc0LDcgQEAKICAgICAiIERldGVjdGlvbiBiZWNvbWVzIG1vcmUgYWNjdXJhdGUgYW5kIHRpbWUtY29uc3VtaW5nIGlmIG1vcmUgbGluZXMKICAgICAiIGFyZSBjaGVja2VkLiBJbmNyZWFzZSB0aGUgbGltaXQgYmVsb3cgaWYgeW91IGtlZXAgbG90cyBvZiBjb21tZW50cyBhdAogICAgICIgdGhlIHZlcnkgdG9wIG9mIGVhY2ggZmlsZSBhbmQgeW91IGhhdmUgYSBmYXN0IGNvbXB1dGVyLgotICAgIGxldCBiOmxtYXggPSAyNTAKKyAgICBsZXQgYjpsbWF4ID0gNTAwCiAgICAgaWYgKCBiOmxtYXggPiBsaW5lKCIkIikgKQogICAgICAgbGV0IGI6bG1heCA9IGxpbmUoIiQiKQogICAgIGVuZGlmCkBAIC04Miw3ICs4Miw3IEBACiAgICAgbGV0IGI6bG49MQogICAgIHdoaWxlIGI6bG4gPD0gYjpsbWF4CiAgICAgICBsZXQgYjp0ZXN0ID0gc3RycGFydChnZXRsaW5lKGI6bG4pLDAsNSkKLSAgICAgIGlmIGI6dGVzdFswXSAhfiAnW0NjKiEjXScgJiYgYjp0ZXN0ICF+ICdeIFwrWyEjXScgJiYgYjp0ZXN0ID1+ICdbXiAwLTlcdF0nCisgICAgICBpZiBiOnRlc3QgIX4gJ15bQ2MqXScgJiYgYjp0ZXN0ICF+ICdeICpbISNdJyAmJiBiOnRlc3QgPX4gJ1teIDAtOVx0XScgJiYgYjp0ZXN0ICF+ICdeWyAwLTldKlx0JwogCWxldCBiOmZvcnRyYW5fZml4ZWRfc291cmNlID0gMAogCWJyZWFrCiAgICAgICBlbmRpZgpAQCAtMjA3LDcgKzIwNyw4IEBACiAKIHN5biBrZXl3b3JkIGZvcnRyYW5UeXBlRXgJZXh0ZXJuYWwKIHN5biBrZXl3b3JkIGZvcnRyYW5JT0V4CQlmb3JtYXQKLXN5biBrZXl3b3JkIGZvcnRyYW5LZXl3b3JkRXgJY29udGludWUKK3N5biBtYXRjaCBmb3J0cmFuS2V5d29yZEV4CSJcPGNvbnRpbnVlXD4iCitzeW4gbWF0Y2ggZm9ydHJhbktleXdvcmQJIl5ccypcZFwrXHNcK2NvbnRpbnVlXD4iCiBzeW4gbWF0Y2ggZm9ydHJhbktleXdvcmRFeAkiXDxnb1xzKnRvXD4iCiBzeW4gcmVnaW9uIGZvcnRyYW5TdHJpbmdFeAlzdGFydD0rJysgZW5kPSsnKyBjb250YWlucz1mb3J0cmFuQ29udGludWVNYXJrLGZvcnRyYW5MZWZ0TWFyZ2luLGZvcnRyYW5TZXJpYWxOdW1iZXIKIHN5biBrZXl3b3JkIGZvcnRyYW43N0ludHJpbnNpY0V4CWRpbSBsZ2UgbGd0IGxsZSBsbHQgbW9kCkBAIC0yOTAsNiArMjkxLDQwIEBACiAgIGVuZGlmCiBlbmRpZgogCitpZiBiOmZvcnRyYW5fZGlhbGVjdCA9PSAiZjk1IgorICAiIEYyMDAzCisgIHN5biBrZXl3b3JkIGZvcnRyYW4wM0ludHJpbnNpYyAgICAgICAgY29tbWFuZF9hcmd1bWVudF9jb3VudCBnZXRfY29tbWFuZCBnZXRfY29tbWFuZF9hcmd1bWVudCBnZXRfZW52aXJvbm1lbnRfdmFyaWFibGUgaXNfaW9zdGF0X2VuZCBpc19pb3N0YXRfZW9yIG1vdmVfYWxsb2MgbmV3X2xpbmUgc2VsZWN0ZWRfY2hhcl9raW5kIHNhbWVfdHlwZV9hcyBleHRlbmRzX3R5cGVfb2YKKyAgIiBJU09fQ19iaW5kaW5nCisgIHN5biBrZXl3b3JkIGZvcnRyYW4wM0NvbnN0YW50ICAgICAgICAgY19udWxsX2NoYXIgY19hbGVydCBjX2JhY2tzcGFjZSBjX2Zvcm1fZmVlZCBjX25ld19saW5lIGNfY2FycmlhZ2VfcmV0dXJuIGNfaG9yaXpvbnRhbF90YWIgY192ZXJ0aWNhbF90YWIKKyAgc3luIGtleXdvcmQgZm9ydHJhbjAzQ29uc3RhbnQgICAgICAgICBjX2ludCBjX3Nob3J0IGNfbG9uZyBjX2xvbmdfbG9uZyBjX3NpZ25lZF9jaGFyIGNfc2l6ZV90IGNfaW50OF90IGNfaW50MTZfdCBjX2ludDMyX3QgY19pbnQ2NF90IGNfaW50X2xlYXN0OF90IGNfaW50X2xlYXN0MTZfdCBjX2ludF9sZWFzdDMyX3QgY19pbnRfbGVhc3Q2NF90IGNfaW50X2Zhc3Q4X3QgY19pbnRfZmFzdDE2X3QgY19pbnRfZmFzdDMyX3QgY19pbnRfZmFzdDY0X3QgY19pbnRtYXhfdCBDX2ludHB0cl90IGNfZmxvYXQgY19kb3VibGUgY19sb25nX2RvdWJsZSBjX2Zsb2F0X2NvbXBsZXggY19kb3VibGVfY29tcGxleCBjX2xvbmdfZG91YmxlX2NvbXBsZXggY19ib29sIGNfY2hhciBjX251bGxfcHRyIGNfbnVsbF9mdW5wdHIKKyAgc3luIGtleXdvcmQgZm9ydHJhbjAzSW50cmluc2ljICAgICAgICBpc29fY19iaW5kaW5nIGNfbG9jIGNfZnVubG9jIGNfYXNzb2NpYXRlZCAgY19mX3BvaW50ZXIgY19mX3Byb2Nwb2ludGVyCisgIHN5biBrZXl3b3JkIGZvcnRyYW4wM1R5cGUgICAgICAgICAgICAgY19wdHIgY19mdW5wdHIKKyAgIiBJU09fRm9ydHJhbl9lbnYKKyAgc3luIGtleXdvcmQgZm9ydHJhbjAzQ29uc3RhbnQgICAgICAgICBpc29fZm9ydHJhbl9lbnYgY2hhcmFjdGVyX3N0b3JhZ2Vfc2l6ZSBlcnJvcl91bml0IGZpbGVfc3RvcmFnZV9zaXplIGlucHV0X3VuaXQgaW9zdGF0X2VuZCBpb3N0YXRfZW9yIG51bWVyaWNfc3RvcmFnZV9zaXplIG91dHB1dF91bml0CisgICIgSUVFRV9hcml0aG1ldGljCisgIHN5biBrZXl3b3JkIGZvcnRyYW4wM0ludHJpbnNpYyAgICAgICAgaWVlZV9hcml0aG1ldGljIGllZWVfc3VwcG9ydF91bmRlcmZsb3dfY29udHJvbCBpZWVlX2dldF91bmRlcmZsb3dfbW9kZSBpZWVlX3NldF91bmRlcmZsb3dfbW9kZQorCisgIHN5biBrZXl3b3JkIGZvcnRyYW4wM1JlYWRXcml0ZQlmbHVzaCB3YWl0CisgIHN5biBrZXl3b3JkIGZvcnRyYW4wM0lPCSAgICAgICAgZGVjaW1hbCByb3VuZCBpb21zZworICBzeW4ga2V5d29yZCBmb3J0cmFuMDNUeXBlICAgICAgICAgICAgIGFzeW5jaHJvbm91cyBub3Bhc3Mgbm9uX292ZXJyaWRhYmxlIHBhc3MgcHJvdGVjdGVkIHZvbGF0aWxlIGFic3RyYWN0IGV4dGVuZHMgaW1wb3J0CisgIHN5biBrZXl3b3JkIGZvcnRyYW4wM1R5cGUgICAgICAgICAgICAgbm9uX2ludHJpbnNpYyB2YWx1ZSBiaW5kIGRlZmVycmVkIGdlbmVyaWMgZmluYWwgZW51bWVyYXRvciBjbGFzcworICBzeW4gbWF0Y2ggZm9ydHJhbjAzVHlwZSAgICAgICAgICAgICAgICJcPGFzc29jaWF0ZVw+IgorICBzeW4gbWF0Y2ggZm9ydHJhbjAzVHlwZSAgICAgICAgICAgICAgICJcPGVuZFxzKmFzc29jaWF0ZSIKKyAgc3luIG1hdGNoIGZvcnRyYW4wM1R5cGUgICAgICAgICAgICAgICAiXDxlbnVtXHMqLFxzKmJpbmRccyooXHMqY1xzKikiCisgIHN5biBtYXRjaCBmb3J0cmFuMDNUeXBlICAgICAgICAgICAgICAgIlw8ZW5kXHMqZW51bSIKKyAgc3luIG1hdGNoIGZvcnRyYW4wM0NvbmRpdGlvbmFsCSJcPHNlbGVjdFxzKnR5cGUiCisgIHN5biBtYXRjaCBmb3J0cmFuMDNDb25kaXRpb25hbCAgICAgICAgIlw8dHlwZVxzKmlzXD4iCisgIHN5biBtYXRjaCBmb3J0cmFuMDNVbml0SGVhZGVyICAgICAgICAgIlw8YWJzdHJhY3RccyppbnRlcmZhY2VcPiIKKyAgc3luIG1hdGNoIGZvcnRyYW4wM09wZXJhdG9yICAgICAgICAgICAiXChbXHxdXCkiCisKKyAgIiBGMjAwOAorICBzeW4ga2V5d29yZCBmb3J0cmFuMDhJbnRyaW5zaWMgICAgICAgIGFjb3NoIGFzaW5oIGF0YW5oIGJlc3NlbF9qMCBiZXNzZWxfajEgYmVzc2VsX2puIGJlc3NlbF95MCBiZXNzZWxfeTEgYmVzc2VsX3luIGVyZiBlcmZjIGVyZmNfc2NhbGVkIGdhbW1hIGxvZ19nYW1tYSBoeXBvdCBub3JtMgorICBzeW4ga2V5d29yZCBmb3J0cmFuMDhJbnRyaW5zaWMgICAgICAgIGF0b21pY19kZWZpbmUgYXRvbWljX3JlZiBleGVjdXRlX2NvbW1hbmRfbGluZSBsZWFkeiB0cmFpbHogc3RvcmFnZV9zaXplIG1lcmdlX2JpdHMKKyAgc3luIGtleXdvcmQgZm9ydHJhbjA4SW50cmluc2ljICAgICAgICBiZ2UgYmd0IGJsZSBibHQgZHNoaWZ0bCBkc2hpZnRyIGZpbmRsb2MgaWFsbCBpYW55IGlwYXJpdHkgaW1hZ2VfaW5kZXggbGNvYm91bmQgdWNvYm91bmQgbWFza2wgbWFza3IgbnVtX2ltYWdlcyBwYXJpdHkgcG9wY250IHBvcHBhciBzaGlmdGEgc2hpZnRsIHNoaWZ0ciB0aGlzX2ltYWdlCisgIHN5biBrZXl3b3JkIGZvcnRyYW4wOElPICAgICAgICAgICAgICAgbmV3dW5pdAorICBzeW4ga2V5d29yZCBmb3J0cmFuMDhUeXBlICAgICAgICAgICAgIGNvbnRpZ3VvdXMKK2VuZGlmCisKIHN5biBjbHVzdGVyIGZvcnRyYW5Db21tZW50R3JvdXAgY29udGFpbnM9Zm9ydHJhblRvZG8KIAogaWYgKGI6Zm9ydHJhbl9maXhlZF9zb3VyY2UgPT0gMSkKQEAgLTMyNCw5ICszNTksOSBAQAogaWYgZXhpc3RzKCJmb3J0cmFuX2ZvbGQiKSB8fCBleGlzdHMoImZvcnRyYW5fbW9yZV9wcmVjaXNlIikKICAgc3luIHN5bmMgZnJvbXN0YXJ0CiBlbHNlaWYgKGI6Zm9ydHJhbl9maXhlZF9zb3VyY2UgPT0gMCkKLSAgc3luIHN5bmMgbGluZWNvbnQgIiYiIG1pbmxpbmVzPTIwCisgIHN5biBzeW5jIGxpbmVjb250ICImIiBtaW5saW5lcz0zMAogZWxzZQotICBzeW4gc3luYyBtaW5saW5lcz0yMAorICBzeW4gc3luYyBtaW5saW5lcz0zMAogZW5kaWYKIAogaWYgdmVyc2lvbiA+PSA2MDAgJiYgZXhpc3RzKCJmb3J0cmFuX2ZvbGQiKQpAQCAtMzM2LDE1ICszNzEsMTcgQEAKICAgICBzeW4gcmVnaW9uIGZvcnRyYW5Nb2R1bGUgdHJhbnNwYXJlbnQgZm9sZCBrZWVwZW5kIHN0YXJ0PSJeXHMqbW9kdWxlXHNcK1wocHJvY2VkdXJlXClcQCFceihcYVx3KlwpIiBza2lwPSJeXChbIWMqXVx8XHMqI1wpLiokIiBleGNsdWRlbmwgZW5kPSJcPGVuZFxzKlwobW9kdWxlXChcc1wrXHoxXD5cKVw9XHwkXCkiIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuUHJvZ3JhbQogICAgIHN5biByZWdpb24gZm9ydHJhbkZ1bmN0aW9uIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBleHRlbmQgc3RhcnQ9Il5ccypcKGVsZW1lbnRhbCBcfHB1cmUgXHxyZWN1cnNpdmUgXClcPVxzKlwoXChcKHJlYWwgXHxpbnRlZ2VyIFx8bG9naWNhbCBcfGNvbXBsZXggXHxkb3VibGUgXHMqcHJlY2lzaW9uIFwpXHMqXCgoXChccypraW5kXHMqPVwpXD1ccypcd1wrXHMqKVwpXD1cKVx8dHlwZVxzXCsoXHMqXHdcK1xzKikgXHxjaGFyYWN0ZXIgXCgoXChccypsZW5ccyo9XClcPVxzKlxkXCtccyopXHwoXChccypraW5kXHMqPVwpXD1ccypcd1wrXHMqKVwpXD1cKVw9XHMqZnVuY3Rpb25cc1wrXHooXGFcdypcKSIgc2tpcD0iXlwoWyFjKl1cfFxzKiNcKS4qJCIgZXhjbHVkZW5sIGVuZD0iXDxlbmRccypcKCRcfGZ1bmN0aW9uXChcc1wrXHoxXD5cKVw9XCkiIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuUHJvZ3JhbSxmb3J0cmFuTW9kdWxlCiAgICAgc3luIHJlZ2lvbiBmb3J0cmFuU3Vicm91dGluZSB0cmFuc3BhcmVudCBmb2xkIGtlZXBlbmQgZXh0ZW5kIHN0YXJ0PSJeXHMqXChlbGVtZW50YWwgXHxwdXJlIFx8cmVjdXJzaXZlIFwpXD1ccypzdWJyb3V0aW5lXHNcK1x6KFxhXHcqXCkiIHNraXA9Il5cKFshYypdXHxccyojXCkuKiQiIGV4Y2x1ZGVubCBlbmQ9Ilw8ZW5kXHMqXCgkXHxzdWJyb3V0aW5lXChcc1wrXHoxXD5cKVw9XCkiIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuUHJvZ3JhbSxmb3J0cmFuTW9kdWxlCi0gICAgc3luIHJlZ2lvbiBmb3J0cmFuQmxvY2tEYXRhIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBzdGFydD0iXDxibG9ja1xzKmRhdGFcc1wrXHooXGFcdypcKSIgc2tpcD0iXlwoWyFjKl1cfFxzKiNcKS4qJCIgZXhjbHVkZW5sIGVuZD0iXDxlbmRccypcKCRcfGJsb2NrXHMqZGF0YVwoXHNcK1x6MVw+XClcPVwpIiBjb250YWlucz1BTExCVVQsZm9ydHJhblByb2dyYW0sZm9ydHJhbk1vZHVsZSxmb3J0cmFuU3Vicm91dGluZSxmb3J0cmFuRnVuY3Rpb24sZm9ydHJhbjc3TG9vcCxmb3J0cmFuQ2FzZSxmb3J0cmFuOTBMb29wLGZvcnRyYW5JZkJsb2NrCisgICAgc3luIHJlZ2lvbiBmb3J0cmFuQmxvY2tEYXRhIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBzdGFydD0iXDxibG9ja1xzKmRhdGFcKFxzXCtceihcYVx3KlwpXClcPSIgc2tpcD0iXlwoWyFjKl1cfFxzKiNcKS4qJCIgZXhjbHVkZW5sIGVuZD0iXDxlbmRccypcKCRcfGJsb2NrXHMqZGF0YVwoXHNcK1x6MVw+XClcPVwpIiBjb250YWlucz1BTExCVVQsZm9ydHJhblByb2dyYW0sZm9ydHJhbk1vZHVsZSxmb3J0cmFuU3Vicm91dGluZSxmb3J0cmFuRnVuY3Rpb24sZm9ydHJhbjc3TG9vcCxmb3J0cmFuQ2FzZSxmb3J0cmFuOTBMb29wLGZvcnRyYW5JZkJsb2NrCiAgICAgc3luIHJlZ2lvbiBmb3J0cmFuSW50ZXJmYWNlIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBleHRlbmQgc3RhcnQ9Il5ccyppbnRlcmZhY2VcPiIgc2tpcD0iXlwoWyFjKl1cfFxzKiNcKS4qJCIgZXhjbHVkZW5sIGVuZD0iXDxlbmRccyppbnRlcmZhY2VcPiIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Qcm9ncmFtLGZvcnRyYW5Nb2R1bGUsZm9ydHJhbjc3TG9vcCxmb3J0cmFuQ2FzZSxmb3J0cmFuOTBMb29wLGZvcnRyYW5JZkJsb2NrCisgICAgc3luIHJlZ2lvbiBmb3J0cmFuVHlwZURlZiB0cmFuc3BhcmVudCBmb2xkIGtlZXBlbmQgZXh0ZW5kIHN0YXJ0PSJeXHMqdHlwZVxzKlwoLFxzKlwocHVibGljXHxwcml2YXRlXClcKVw9XHMqOjoiIHNraXA9Il5cKFshYypdXHxccyojXCkuKiQiIGV4Y2x1ZGVubCBlbmQ9Ilw8ZW5kXHMqdHlwZVw+IiBjb250YWlucz1BTExCVVQsZm9ydHJhblByb2dyYW0sZm9ydHJhbk1vZHVsZSxmb3J0cmFuNzdMb29wLGZvcnRyYW5DYXNlLGZvcnRyYW45MExvb3AsZm9ydHJhbklmQmxvY2sKICAgZWxzZQogICAgIHN5biByZWdpb24gZm9ydHJhblByb2dyYW0gdHJhbnNwYXJlbnQgZm9sZCBrZWVwZW5kIHN0YXJ0PSJeXHMqcHJvZ3JhbVxzXCtceihcYVx3KlwpIiBza2lwPSJeXHMqWyEjXS4qJCIgZXhjbHVkZW5sIGVuZD0iXDxlbmRccypcKHByb2dyYW1cKFxzXCtcejFcPlwpXD1cfCRcKSIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Nb2R1bGUKICAgICBzeW4gcmVnaW9uIGZvcnRyYW5Nb2R1bGUgdHJhbnNwYXJlbnQgZm9sZCBrZWVwZW5kIHN0YXJ0PSJeXHMqbW9kdWxlXHNcK1wocHJvY2VkdXJlXClcQCFceihcYVx3KlwpIiBza2lwPSJeXHMqWyEjXS4qJCIgZXhjbHVkZW5sIGVuZD0iXDxlbmRccypcKG1vZHVsZVwoXHNcK1x6MVw+XClcPVx8JFwpIiBjb250YWlucz1BTExCVVQsZm9ydHJhblByb2dyYW0KICAgICBzeW4gcmVnaW9uIGZvcnRyYW5GdW5jdGlvbiB0cmFuc3BhcmVudCBmb2xkIGtlZXBlbmQgZXh0ZW5kIHN0YXJ0PSJeXHMqXChlbGVtZW50YWwgXHxwdXJlIFx8cmVjdXJzaXZlIFwpXD1ccypcKFwoXChyZWFsIFx8aW50ZWdlciBcfGxvZ2ljYWwgXHxjb21wbGV4IFx8ZG91YmxlIFxzKnByZWNpc2lvbiBcKVxzKlwoKFwoXHMqa2luZFxzKj1cKVw9XHMqXHdcK1xzKilcKVw9XClcfHR5cGVcc1wrKFxzKlx3XCtccyopIFx8Y2hhcmFjdGVyIFwoKFwoXHMqbGVuXHMqPVwpXD1ccypcZFwrXHMqKVx8KFwoXHMqa2luZFxzKj1cKVw9XHMqXHdcK1xzKilcKVw9XClcPVxzKmZ1bmN0aW9uXHNcK1x6KFxhXHcqXCkiIHNraXA9Il5ccypbISNdLiokIiBleGNsdWRlbmwgZW5kPSJcPGVuZFxzKlwoJFx8ZnVuY3Rpb25cKFxzXCtcejFcPlwpXD1cKSIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Qcm9ncmFtLGZvcnRyYW5Nb2R1bGUKICAgICBzeW4gcmVnaW9uIGZvcnRyYW5TdWJyb3V0aW5lIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBleHRlbmQgc3RhcnQ9Il5ccypcKGVsZW1lbnRhbCBcfHB1cmUgXHxyZWN1cnNpdmUgXClcPVxzKnN1YnJvdXRpbmVcc1wrXHooXGFcdypcKSIgc2tpcD0iXlxzKlshI10uKiQiIGV4Y2x1ZGVubCBlbmQ9Ilw8ZW5kXHMqXCgkXHxzdWJyb3V0aW5lXChcc1wrXHoxXD5cKVw9XCkiIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuUHJvZ3JhbSxmb3J0cmFuTW9kdWxlCi0gICAgc3luIHJlZ2lvbiBmb3J0cmFuQmxvY2tEYXRhIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBzdGFydD0iXDxibG9ja1xzKmRhdGFcc1wrXHooXGFcdypcKSIgc2tpcD0iXlxzKlshI10uKiQiIGV4Y2x1ZGVubCBlbmQ9Ilw8ZW5kXHMqXCgkXHxibG9ja1xzKmRhdGFcKFxzXCtcejFcPlwpXD1cKSIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Qcm9ncmFtLGZvcnRyYW5Nb2R1bGUsZm9ydHJhblN1YnJvdXRpbmUsZm9ydHJhbkZ1bmN0aW9uLGZvcnRyYW43N0xvb3AsZm9ydHJhbkNhc2UsZm9ydHJhbjkwTG9vcCxmb3J0cmFuSWZCbG9jaworICAgIHN5biByZWdpb24gZm9ydHJhbkJsb2NrRGF0YSB0cmFuc3BhcmVudCBmb2xkIGtlZXBlbmQgc3RhcnQ9Ilw8YmxvY2tccypkYXRhXChcc1wrXHooXGFcdypcKVwpXD0iIHNraXA9Il5ccypbISNdLiokIiBleGNsdWRlbmwgZW5kPSJcPGVuZFxzKlwoJFx8YmxvY2tccypkYXRhXChcc1wrXHoxXD5cKVw9XCkiIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuUHJvZ3JhbSxmb3J0cmFuTW9kdWxlLGZvcnRyYW5TdWJyb3V0aW5lLGZvcnRyYW5GdW5jdGlvbixmb3J0cmFuNzdMb29wLGZvcnRyYW5DYXNlLGZvcnRyYW45MExvb3AsZm9ydHJhbklmQmxvY2sKICAgICBzeW4gcmVnaW9uIGZvcnRyYW5JbnRlcmZhY2UgdHJhbnNwYXJlbnQgZm9sZCBrZWVwZW5kIGV4dGVuZCBzdGFydD0iXlxzKmludGVyZmFjZVw+IiBza2lwPSJeXHMqWyEjXS4qJCIgZXhjbHVkZW5sIGVuZD0iXDxlbmRccyppbnRlcmZhY2VcPiIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Qcm9ncmFtLGZvcnRyYW5Nb2R1bGUsZm9ydHJhbjc3TG9vcCxmb3J0cmFuQ2FzZSxmb3J0cmFuOTBMb29wLGZvcnRyYW5JZkJsb2NrCisgICAgc3luIHJlZ2lvbiBmb3J0cmFuVHlwZURlZiB0cmFuc3BhcmVudCBmb2xkIGtlZXBlbmQgZXh0ZW5kIHN0YXJ0PSJeXHMqdHlwZVxzKlwoLFxzKlwocHVibGljXHxwcml2YXRlXClcKVw9XHMqOjoiIHNraXA9Il5ccypbISNdLiokIiBleGNsdWRlbmwgZW5kPSJcPGVuZFxzKnR5cGVcPiIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Qcm9ncmFtLGZvcnRyYW5Nb2R1bGUsZm9ydHJhbjc3TG9vcCxmb3J0cmFuQ2FzZSxmb3J0cmFuOTBMb29wLGZvcnRyYW5JZkJsb2NrCiAgIGVuZGlmCiAKICAgaWYgZXhpc3RzKCJmb3J0cmFuX2ZvbGRfY29uZGl0aW9uYWxzIikKQEAgLTM5MCwyNiArNDI3LDQxIEBACiAgICIgZm9ydHJhbk11bHRpQ29tbWVudExpbmVzCiAgIEhpTGluayBmb3J0cmFuS2V5d29yZCAJS2V5d29yZAogICBIaUxpbmsgZm9ydHJhbkNvbnN0cnVjdE5hbWUJSWRlbnRpZmllcgorICBIaUxpbmsgZm9ydHJhbjAzQ29uZGl0aW9uYWwJZm9ydHJhbkNvbmRpdGlvbmFsCiAgIEhpTGluayBmb3J0cmFuQ29uZGl0aW9uYWwJQ29uZGl0aW9uYWwKICAgSGlMaW5rIGZvcnRyYW5SZXBlYXQJCVJlcGVhdAogICBIaUxpbmsgZm9ydHJhblRvZG8JCVRvZG8KLSAgSGlMaW5rIGZvcnRyYW5Db250aW51ZU1hcmsJVG9kbworICBpZiAoYjpmb3J0cmFuX2ZpeGVkX3NvdXJjZSA9PSAxKQorICAgIEhpTGluayBmb3J0cmFuQ29udGludWVNYXJrCVRvZG8KKyAgZWxzZQorICAgIEhpTGluayBmb3J0cmFuQ29udGludWVNYXJrCUtleXdvcmQKKyAgZW5kaWYKICAgSGlMaW5rIGZvcnRyYW5TdHJpbmcJCVN0cmluZwogICBIaUxpbmsgZm9ydHJhbk51bWJlcgkJTnVtYmVyCisgIEhpTGluayBmb3J0cmFuMDNPcGVyYXRvcglmb3J0cmFuT3BlcmF0b3IKICAgSGlMaW5rIGZvcnRyYW5PcGVyYXRvcglPcGVyYXRvcgogICBIaUxpbmsgZm9ydHJhbkJvb2xlYW4JCUJvb2xlYW4KICAgSGlMaW5rIGZvcnRyYW5MYWJlbEVycm9yCUVycm9yCiAgIEhpTGluayBmb3J0cmFuT2Jzb2xldGUJVG9kbworICBIaUxpbmsgZm9ydHJhbjAzVHlwZSAgCWZvcnRyYW5UeXBlCisgIEhpTGluayBmb3J0cmFuMDhUeXBlCSAgICAgICAgZm9ydHJhblR5cGUKICAgSGlMaW5rIGZvcnRyYW5UeXBlCQlUeXBlCiAgIEhpTGluayBmb3J0cmFuU3RydWN0dXJlCVR5cGUKICAgSGlMaW5rIGZvcnRyYW5TdG9yYWdlQ2xhc3MJU3RvcmFnZUNsYXNzCi0gIEhpTGluayBmb3J0cmFuQ2FsbAkJZm9ydHJhblVuaXRIZWFkZXIKKyAgSGlMaW5rIGZvcnRyYW5DYWxsCQlGdW5jdGlvbgorICBIaUxpbmsgZm9ydHJhbjAzVW5pdEhlYWRlcglmb3J0cmFuVW5pdEhlYWRlcgogICBIaUxpbmsgZm9ydHJhblVuaXRIZWFkZXIJZm9ydHJhblByZUNvbmRpdAorICBIaUxpbmsgZm9ydHJhbjAzUmVhZFdyaXRlCWZvcnRyYW5SZWFkV3JpdGUKICAgSGlMaW5rIGZvcnRyYW5SZWFkV3JpdGUJS2V5d29yZAorICBIaUxpbmsgZm9ydHJhbjAzSU8JCWZvcnRyYW5JTworICBIaUxpbmsgZm9ydHJhbjA4SU8JCWZvcnRyYW5JTwogICBIaUxpbmsgZm9ydHJhbklPCQlLZXl3b3JkCiAgIEhpTGluayBmb3J0cmFuOTVJbnRyaW5zaWMJZm9ydHJhbjkwSW50cmluc2ljCiAgIEhpTGluayBmb3J0cmFuNzdJbnRyaW5zaWMJZm9ydHJhbjkwSW50cmluc2ljCiAgIEhpTGluayBmb3J0cmFuOTBJbnRyaW5zaWMJRnVuY3Rpb24KKyAgSGlMaW5rIGZvcnRyYW4wM0ludHJpbnNpYwlGdW5jdGlvbgorICBIaUxpbmsgZm9ydHJhbjA4SW50cmluc2ljCUZ1bmN0aW9uCisgIEhpTGluayBmb3J0cmFuMDNDb25zdGFudAlGdW5jdGlvbgogCiAgIGlmICggYjpmb3J0cmFuX2RpYWxlY3QgPT0gImVsZiIgfHwgYjpmb3J0cmFuX2RpYWxlY3QgPT0gIkYiICkKICAgICBIaUxpbmsgZm9ydHJhbktleXdvcmRPYglmb3J0cmFuT2Jzb2xldGUK