IiBWaW0gc3ludGF4IGZpbGUKIiBMYW5ndWFnZToJRm9ydHJhbjk1IChhbmQgRm9ydHJhbjkwLCBGb3J0cmFuNzcsIEYgYW5kIGVsZjkwKQoiIFZlcnNpb246CTAuODgKIiBVUkw6CQlodHRwOi8vd3d3LnVuYi5jYS9jaGVtL2FqaXQvc3ludGF4L2ZvcnRyYW4udmltCiIgTGFzdCBDaGFuZ2U6CTIwMDggTm92IDAxCiIgTWFpbnRhaW5lcjoJQWppdCBKLiBUaGFra2FyIChhaml0IEFUIHVuYi5jYSk7IDxodHRwOi8vd3d3LnVuYi5jYS9jaGVtL2FqaXQvPgoiIFVzYWdlOglEbyA6aGVscCBmb3J0cmFuLXN5bnRheCBmcm9tIFZpbQoiIENyZWRpdHM6CiIgIFZlcnNpb24gMC4xIHdhcyBiYXNlZCBvbiB0aGUgZm9ydHJhbiA3NyBzeW50YXggZmlsZSBieSBNYXJpbyBFdXNlYmlvIGFuZAoiICBQcmViZW4gR3VsZGJlcmcuIFVzZWZ1bCBzdWdnZXN0aW9ucyB3ZXJlIG1hZGUgYnk6IEFuZHJlaiBQYW5qa292LAoiICBCcmFtIE1vb2xlbmFhciwgVGhvbWFzIE9sc2VuLCBNaWNoYWVsIFN0ZXJuYmVyZywgQ2hyaXN0aWFuIFJlaWxlLAoiICBXYWx0ZXIgRGlldWRvbm7pLCBBbGV4YW5kZXIgV2FnbmVyLCBSb21hbiBCZXJ0bGUsIENoYXJsZXMgUmVuZGxlbWFuLAoiICBhbmQgQW5kcmV3IEdyaWZmaXRocy4gRm9yIGluc3RydWN0aW9ucyBvbiB1c2UsIGRvIDpoZWxwIGZvcnRyYW4gZnJvbSB2aW0KCiIgRm9yIHZlcnNpb24gNS54OiBDbGVhciBhbGwgc3ludGF4IGl0ZW1zCiIgRm9yIHZlcnNpb24gNi54OiBRdWl0IGlmIGEgc3ludGF4IGZpbGUgaXMgYWxyZWFkeSBsb2FkZWQKaWYgdmVyc2lvbiA8IDYwMAogIHN5bnRheCBjbGVhcgplbHNlaWYgZXhpc3RzKCJiOmN1cnJlbnRfc3ludGF4IikKICBmaW5pc2gKZW5kaWYKCiIgbGV0IGI6Zm9ydHJhbl9kaWFsZWN0ID0gZm9ydHJhbl9kaWFsZWN0IGlmIHNldCBjb3JyZWN0bHkgYnkgdXNlcgppZiBleGlzdHMoImZvcnRyYW5fZGlhbGVjdCIpCiAgaWYgZm9ydHJhbl9kaWFsZWN0ID1+ICdcPFwoZlwoOVswNV1cfDc3XClcfGVsZlx8RlwpXD4nCiAgICBsZXQgYjpmb3J0cmFuX2RpYWxlY3QgPSBtYXRjaHN0cihmb3J0cmFuX2RpYWxlY3QsJ1w8XChmXCg5WzA1XVx8NzdcKVx8ZWxmXHxGXClcPicpCiAgZWxzZQogICAgZWNob2hsIFdhcm5pbmdNc2cgfCBlY2hvICJVbmtub3duIHZhbHVlIG9mIGZvcnRyYW5fZGlhbGVjdCIgfCBlY2hvaGwgTm9uZQogICAgbGV0IGI6Zm9ydHJhbl9kaWFsZWN0ID0gInVua25vd24iCiAgZW5kaWYKZWxzZQogIGxldCBiOmZvcnRyYW5fZGlhbGVjdCA9ICJ1bmtub3duIgplbmRpZgoKIiBmb3J0cmFuX2RpYWxlY3Qgbm90IHNldCBvciBzZXQgaW5jb3JyZWN0bHkgYnkgdXNlciwKaWYgYjpmb3J0cmFuX2RpYWxlY3QgPT0gInVua25vd24iCiAgIiBzZXQgYjpmb3J0cmFuX2RpYWxlY3QgZnJvbSBkaXJlY3RpdmUgaW4gZmlyc3QgdGhyZWUgbGluZXMgb2YgZmlsZQogIGxldCBiOmZvcnRyYW5fcmV0eXBlID0gZ2V0bGluZSgxKS4iICIuZ2V0bGluZSgyKS4iICIuZ2V0bGluZSgzKQogIGlmIGI6Zm9ydHJhbl9yZXR5cGUgPX4gJ1w8Zm9ydHJhbl9kaWFsZWN0XHMqPVxzKkZcPicKICAgIGxldCBiOmZvcnRyYW5fZGlhbGVjdCA9ICJGIgogIGVsc2VpZiBiOmZvcnRyYW5fcmV0eXBlID1+ICdcPGZvcnRyYW5fZGlhbGVjdFxzKj1ccyplbGZcPicKICAgIGxldCBiOmZvcnRyYW5fZGlhbGVjdCA9ICJlbGYiCiAgZWxzZWlmIGI6Zm9ydHJhbl9yZXR5cGUgPX4gJ1w8Zm9ydHJhbl9kaWFsZWN0XHMqPVxzKmY5MFw+JwogICAgbGV0IGI6Zm9ydHJhbl9kaWFsZWN0ID0gImY5MCIKICBlbHNlaWYgYjpmb3J0cmFuX3JldHlwZSA9fiAnXDxmb3J0cmFuX2RpYWxlY3Rccyo9XHMqZjk1XD4nCiAgICBsZXQgYjpmb3J0cmFuX2RpYWxlY3QgPSAiZjk1IgogIGVsc2VpZiBiOmZvcnRyYW5fcmV0eXBlID1+ICdcPGZvcnRyYW5fZGlhbGVjdFxzKj1ccypmNzdcPicKICAgIGxldCBiOmZvcnRyYW5fZGlhbGVjdCA9ICJmNzciCiAgZWxzZQogICAgIiBubyBkaXJlY3RpdmUgZm91bmQsIHNvIGFzc3VtZSBmOTUKICAgIGxldCBiOmZvcnRyYW5fZGlhbGVjdCA9ICJmOTUiCiAgZW5kaWYKICB1bmxldCBiOmZvcnRyYW5fcmV0eXBlCmVuZGlmCgoiIENob29zZSBiZXR3ZWVuIGZpeGVkIGFuZCBmcmVlIHNvdXJjZSBmb3JtIGlmIHRoaXMgaGFzbid0IGJlZW4gZG9uZSB5ZXQKaWYgIWV4aXN0cygiYjpmb3J0cmFuX2ZpeGVkX3NvdXJjZSIpCiAgaWYgYjpmb3J0cmFuX2RpYWxlY3QgPT0gImVsZiIgfHwgYjpmb3J0cmFuX2RpYWxlY3QgPT0gIkYiCiAgICAiIGVsZiBhbmQgRiByZXF1aXJlIGZyZWUgc291cmNlIGZvcm0KICAgIGxldCBiOmZvcnRyYW5fZml4ZWRfc291cmNlID0gMAogIGVsc2VpZiBiOmZvcnRyYW5fZGlhbGVjdCA9PSAiZjc3IgogICAgIiBmNzcgcmVxdWlyZXMgZml4ZWQgc291cmNlIGZvcm0KICAgIGxldCBiOmZvcnRyYW5fZml4ZWRfc291cmNlID0gMQogIGVsc2VpZiBleGlzdHMoImZvcnRyYW5fZnJlZV9zb3VyY2UiKQogICAgIiBVc2VyIGd1YXJhbnRlZXMgZnJlZSBzb3VyY2UgZm9ybSBmb3IgYWxsIGY5MCBhbmQgZjk1IGZpbGVzCiAgICBsZXQgYjpmb3J0cmFuX2ZpeGVkX3NvdXJjZSA9IDAKICBlbHNlaWYgZXhpc3RzKCJmb3J0cmFuX2ZpeGVkX3NvdXJjZSIpCiAgICAiIFVzZXIgZ3VhcmFudGVlcyBmaXhlZCBzb3VyY2UgZm9ybSBmb3IgYWxsIGY5MCBhbmQgZjk1IGZpbGVzCiAgICBsZXQgYjpmb3J0cmFuX2ZpeGVkX3NvdXJjZSA9IDEKICBlbHNlCiAgICAiIGY5MCBhbmQgZjk1IGFsbG93IGJvdGggZml4ZWQgYW5kIGZyZWUgc291cmNlIGZvcm0uCiAgICAiIEFzc3VtZSBmaXhlZCBzb3VyY2UgZm9ybSB1bmxlc3Mgc2lnbnMgb2YgZnJlZSBzb3VyY2UgZm9ybQogICAgIiBhcmUgZGV0ZWN0ZWQgaW4gdGhlIGZpcnN0IGZpdmUgY29sdW1ucyBvZiB0aGUgZmlyc3QgYjpsbWF4IGxpbmVzLgogICAgIiBEZXRlY3Rpb24gYmVjb21lcyBtb3JlIGFjY3VyYXRlIGFuZCB0aW1lLWNvbnN1bWluZyBpZiBtb3JlIGxpbmVzCiAgICAiIGFyZSBjaGVja2VkLiBJbmNyZWFzZSB0aGUgbGltaXQgYmVsb3cgaWYgeW91IGtlZXAgbG90cyBvZiBjb21tZW50cyBhdAogICAgIiB0aGUgdmVyeSB0b3Agb2YgZWFjaCBmaWxlIGFuZCB5b3UgaGF2ZSBhIGZhc3QgY29tcHV0ZXIuCiAgICBsZXQgYjpsbWF4ID0gMjUwCiAgICBpZiAoIGI6bG1heCA+IGxpbmUoIiQiKSApCiAgICAgIGxldCBiOmxtYXggPSBsaW5lKCIkIikKICAgIGVuZGlmCiAgICBsZXQgYjpmb3J0cmFuX2ZpeGVkX3NvdXJjZSA9IDEKICAgIGxldCBiOmxuPTEKICAgIHdoaWxlIGI6bG4gPD0gYjpsbWF4CiAgICAgIGxldCBiOnRlc3QgPSBzdHJwYXJ0KGdldGxpbmUoYjpsbiksMCw1KQogICAgICBpZiBiOnRlc3RbMF0gIX4gJ1tDYyohI10nICYmIGI6dGVzdCAhfiAnXiBcK1shI10nICYmIGI6dGVzdCA9fiAnW14gMC05XHRdJwoJbGV0IGI6Zm9ydHJhbl9maXhlZF9zb3VyY2UgPSAwCglicmVhawogICAgICBlbmRpZgogICAgICBsZXQgYjpsbiA9IGI6bG4gKyAxCiAgICBlbmR3aGlsZQogICAgdW5sZXQgYjpsbWF4IGI6bG4gYjp0ZXN0CiAgZW5kaWYKZW5kaWYKCnN5biBjYXNlIGlnbm9yZQoKaWYgYjpmb3J0cmFuX2RpYWxlY3QgIT0/ICJmNzciCiAgaWYgdmVyc2lvbiA+PSA2MDAKICAgIGlmIGI6Zm9ydHJhbl9maXhlZF9zb3VyY2UgPT0gMQogICAgICBzeW4gbWF0Y2ggZm9ydHJhbkNvbnN0cnVjdE5hbWUJIl5cc1x7Nix9XHpzXGFcdypcemVccyo6IgogICAgZWxzZQogICAgICBzeW4gbWF0Y2ggZm9ydHJhbkNvbnN0cnVjdE5hbWUJIl5ccypcenNcYVx3Klx6ZVxzKjoiCiAgICBlbmRpZgogICAgaWYgZXhpc3RzKCJmb3J0cmFuX21vcmVfcHJlY2lzZSIpCiAgICAgIHN5biBtYXRjaCBmb3J0cmFuQ29uc3RydWN0TmFtZSAiXChcPGVuZFxzKmRvXHNcK1wpXEA8PVxhXHcqIgogICAgICBzeW4gbWF0Y2ggZm9ydHJhbkNvbnN0cnVjdE5hbWUgIlwoXDxlbmRccyppZlxzXCtcKVxAPD1cYVx3KiIKICAgICAgc3luIG1hdGNoIGZvcnRyYW5Db25zdHJ1Y3ROYW1lICJcKFw8ZW5kXHMqc2VsZWN0XHNcK1wpXEA8PVxhXHcqIgogICAgZW5kaWYKICBlbHNlCiAgICBpZiBiOmZvcnRyYW5fZml4ZWRfc291cmNlID09IDEKICAgICAgc3luIG1hdGNoIGZvcnRyYW5Db25zdHJ1Y3ROYW1lCSJeXHNcezYsfVxhXHcqXHMqOiIKICAgIGVsc2UKICAgICAgc3luIG1hdGNoIGZvcnRyYW5Db25zdHJ1Y3ROYW1lCSJeXHMqXGFcdypccyo6IgogICAgZW5kaWYKICBlbmRpZgplbmRpZgoKc3luIG1hdGNoICAgZm9ydHJhblVuaXRIZWFkZXIJIlw8ZW5kXD4iCgpzeW4gbWF0Y2ggZm9ydHJhblR5cGUJCSJcPGNoYXJhY3Rlclw+IgpzeW4gbWF0Y2ggZm9ydHJhblR5cGUJCSJcPGNvbXBsZXhcPiIKc3luIG1hdGNoIGZvcnRyYW5UeXBlCQkiXDxpbnRlZ2VyXD4iCnN5biBrZXl3b3JkIGZvcnRyYW5UeXBlCQlpbnRyaW5zaWMKc3luIG1hdGNoIGZvcnRyYW5UeXBlCQkiXDxpbXBsaWNpdFw+IgpzeW4ga2V5d29yZCBmb3J0cmFuU3RydWN0dXJlCWRpbWVuc2lvbgpzeW4ga2V5d29yZCBmb3J0cmFuU3RvcmFnZUNsYXNzCXBhcmFtZXRlciBzYXZlCnN5biBtYXRjaCBmb3J0cmFuVW5pdEhlYWRlcgkiXDxzdWJyb3V0aW5lXD4iCnN5biBrZXl3b3JkIGZvcnRyYW5DYWxsCQljYWxsCnN5biBtYXRjaCBmb3J0cmFuVW5pdEhlYWRlcgkiXDxmdW5jdGlvblw+IgpzeW4gbWF0Y2ggZm9ydHJhblVuaXRIZWFkZXIJIlw8cHJvZ3JhbVw+IgpzeW4ga2V5d29yZCBmb3J0cmFuS2V5d29yZAlyZXR1cm4gc3RvcApzeW4ga2V5d29yZCBmb3J0cmFuQ29uZGl0aW9uYWwJZWxzZSB0aGVuCnN5biBtYXRjaCBmb3J0cmFuQ29uZGl0aW9uYWwJIlw8aWZcPiIKc3luIG1hdGNoIGZvcnRyYW5SZXBlYXQJCSJcPGRvXD4iCgpzeW4ga2V5d29yZCBmb3J0cmFuVG9kbwkJY29udGFpbmVkIHRvZG8gZml4bWUKCiJDYXRjaCBlcnJvcnMgY2F1c2VkIGJ5IHRvbyBtYW55IHJpZ2h0IHBhcmVudGhlc2VzCnN5biByZWdpb24gZm9ydHJhblBhcmVuIHRyYW5zcGFyZW50IHN0YXJ0PSIoIiBlbmQ9IikiIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuUGFyZW5FcnJvcixAZm9ydHJhbkNvbW1lbnRHcm91cCxjSW5jbHVkZWQsQHNwZWxsCnN5biBtYXRjaCAgZm9ydHJhblBhcmVuRXJyb3IgICAiKSIKCnN5biBtYXRjaCBmb3J0cmFuT3BlcmF0b3IJIlwuXHMqblw9ZXF2XHMqXC4iCnN5biBtYXRjaCBmb3J0cmFuT3BlcmF0b3IJIlwuXHMqXChhbmRcfG9yXHxub3RcKVxzKlwuIgpzeW4gbWF0Y2ggZm9ydHJhbk9wZXJhdG9yCSJcKCtcfC1cfC9cfFwqXCkiCgpzeW4gbWF0Y2ggZm9ydHJhbkJvb2xlYW4JIlwuXHMqXCh0cnVlXHxmYWxzZVwpXHMqXC4iCgpzeW4ga2V5d29yZCBmb3J0cmFuUmVhZFdyaXRlCWJhY2tzcGFjZSBjbG9zZSBlbmRmaWxlIGlucXVpcmUgb3BlbiBwcmludCByZWFkIHJld2luZCB3cml0ZQoKIklmIHRhYnMgYXJlIGFsbG93ZWQgdGhlbiB0aGUgbGVmdCBtYXJnaW4gY2hlY2tzIGRvIG5vdCB3b3JrCmlmIGV4aXN0cygiZm9ydHJhbl9oYXZlX3RhYnMiKQogIHN5biBtYXRjaCBmb3J0cmFuVGFiCQkiXHQiICB0cmFuc3BhcmVudAplbHNlCiAgc3luIG1hdGNoIGZvcnRyYW5UYWIJCSJcdCIKZW5kaWYKCnN5biBrZXl3b3JkIGZvcnRyYW5JTwkJYWNjZXNzIGJsYW5rIGRpcmVjdCBleGlzdCBmaWxlIGZtdCBmb3JtIGZvcm1hdHRlZCBpb3N0YXQgbmFtZSBuYW1lZCBuZXh0cmVjIG51bWJlciBvcGVuZWQgcmVjIHJlY2wgc2VxdWVudGlhbCBzdGF0dXMgdW5mb3JtYXR0ZWQgdW5pdAoKc3luIGtleXdvcmQgZm9ydHJhbjY2SW50cmluc2ljCQlhbG9nIGFsb2cxMCBhbWF4MCBhbWF4MSBhbWluMCBhbWluMSBhbW9kIGNhYnMgY2NvcyBjZXhwIGNsb2cgY3NpbiBjc3FydCBkYWJzIGRhY29zIGRhc2luIGRhdGFuIGRhdGFuMiBkY29zIGRjb3NoIGRkaW0gZGV4cCBkaW50IGRsb2cgZGxvZzEwIGRtYXgxIGRtaW4xIGRtb2QgZG5pbnQgZHNpZ24gZHNpbiBkc2luaCBkc3FydCBkdGFuIGR0YW5oIGZsb2F0IGlhYnMgaWRpbSBpZGludCBpZG5pbnQgaWZpeCBpc2lnbiBtYXgwIG1heDEgbWluMCBtaW4xIHNuZ2wKCiIgSW50cmluc2ljcyBwcm92aWRlZCBieSBzb21lIHZlbmRvcnMKc3luIGtleXdvcmQgZm9ydHJhbkV4dHJhSW50cmluc2ljCWFsZ2FtYSBjZGFicyBjZGNvcyBjZGV4cCBjZGxvZyBjZHNpbiBjZHNxcnQgY3FhYnMgY3Fjb3MgY3FleHAgY3Fsb2cgY3FzaW4gY3FzcXJ0IGRjbXBseCBkY29uamcgZGVyZiBkZXJmYyBkZmxvYXQgZGdhbW1hIGRpbWFnIGRsZ2FtYSBlcmYgZXJmYyBnYW1tYSBpcWludCBxYWJzIHFhY29zIHFhc2luIHFhdGFuIHFhdGFuMiBxY21wbHggcWNvbmpnIHFjb3MgcWNvc2ggcWRpbSBxZXJmIHFlcmZjIHFleHAgcWdhbW1hIHFpbWFnIHFsZ2FtYSBxbG9nIHFsb2cxMCBxbWF4MSBxbWluMSBxbW9kIHFuaW50IHFzaWduIHFzaW4gcXNpbmggcXNxcnQgcXRhbiBxdGFuaAoKc3luIGtleXdvcmQgZm9ydHJhbjc3SW50cmluc2ljCWFicyBhY29zIGFpbWFnIGFpbnQgYW5pbnQgYXNpbiBhdGFuIGF0YW4yIGNoYXIgY21wbHggY29uamcgY29zIGNvc2ggZXhwIGljaGFyIGluZGV4IGludCBsb2cgbG9nMTAgbWF4IG1pbiBuaW50IHNpZ24gc2luIHNpbmggc3FydCB0YW4gdGFuaApzeW4gbWF0Y2ggZm9ydHJhbjc3SW50cmluc2ljCSJcPGxlblxzKlsoLF0ibWU9cyszCnN5biBtYXRjaCBmb3J0cmFuNzdJbnRyaW5zaWMJIlw8cmVhbFxzKigibWU9cys0CnN5biBtYXRjaCBmb3J0cmFuVHlwZQkJIlw8aW1wbGljaXRcc1wrcmVhbCIKc3luIG1hdGNoIGZvcnRyYW5UeXBlCQkiXlxzKnJlYWxcPiIKc3luIG1hdGNoIGZvcnRyYW45MEludHJpbnNpYwkiXDxsb2dpY2FsXHMqKCJtZT1zKzcKc3luIG1hdGNoIGZvcnRyYW5UeXBlCQkiXDxpbXBsaWNpdFxzXCtsb2dpY2FsIgpzeW4gbWF0Y2ggZm9ydHJhblR5cGUJCSJeXHMqbG9naWNhbFw+IgoKIk51bWJlcnMgb2YgdmFyaW91cyBzb3J0cwoiIEludGVnZXJzCnN5biBtYXRjaCBmb3J0cmFuTnVtYmVyCWRpc3BsYXkgIlw8XGRcK1woX1xhXHcqXClcPVw+IgoiIGZsb2F0aW5nIHBvaW50IG51bWJlciwgd2l0aG91dCBhIGRlY2ltYWwgcG9pbnQKc3luIG1hdGNoIGZvcnRyYW5GbG9hdE5vRGVjCWRpc3BsYXkJIlw8XGRcK1tkZXFdWy0rXVw9XGRcK1woX1xhXHcqXClcPVw+IgoiIGZsb2F0aW5nIHBvaW50IG51bWJlciwgc3RhcnRpbmcgd2l0aCBhIGRlY2ltYWwgcG9pbnQKc3luIG1hdGNoIGZvcnRyYW5GbG9hdEluaURlYwlkaXNwbGF5CSJcLlxkXCtcKFtkZXFdWy0rXVw9XGRcK1wpXD1cKF9cYVx3KlwpXD1cPiIKIiBmbG9hdGluZyBwb2ludCBudW1iZXIsIG5vIGRpZ2l0cyBhZnRlciBkZWNpbWFsCnN5biBtYXRjaCBmb3J0cmFuRmxvYXRFbmREZWMJZGlzcGxheQkiXDxcZFwrXC5cKFtkZXFdWy0rXVw9XGRcK1wpXD1cKF9cYVx3KlwpXD1cPiIKIiBmbG9hdGluZyBwb2ludCBudW1iZXIsIEQgb3IgUSBleHBvbmVudHMKc3luIG1hdGNoIGZvcnRyYW5GbG9hdERFeHAJZGlzcGxheQkiXDxcZFwrXC5cZFwrXChbZHFdWy0rXVw9XGRcK1wpXD1cKF9cYVx3KlwpXD1cPiIKIiBmbG9hdGluZyBwb2ludCBudW1iZXIKc3luIG1hdGNoIGZvcnRyYW5GbG9hdAlkaXNwbGF5CSJcPFxkXCtcLlxkXCtcKGVbLStdXD1cZFwrXClcPVwoX1xhXHcqXClcPVw+IgoiIE51bWJlcnMgaW4gZm9ybWF0cwpzeW4gbWF0Y2ggZm9ydHJhbkZvcm1hdFNwZWMJZGlzcGxheQkiXGQqZlxkXCtcLlxkXCsiCnN5biBtYXRjaCBmb3J0cmFuRm9ybWF0U3BlYwlkaXNwbGF5CSJcZCplW3NuXVw9XGRcK1wuXGRcK1woZVxkK1w+XClcPSIKc3luIG1hdGNoIGZvcnRyYW5Gb3JtYXRTcGVjCWRpc3BsYXkJIlxkKlwoZFx8cVx8Z1wpXGRcK1wuXGRcK1woZVxkK1wpXD0iCnN5biBtYXRjaCBmb3J0cmFuRm9ybWF0U3BlYwlkaXNwbGF5CSJcZFwreFw+IgoiIFRoZSBuZXh0IG1hdGNoIGNhbm5vdCBiZSB1c2VkIGJlY2F1c2UgaXQgd291bGQgcGljayB1cCBpZGVudGlmaWVycyBhcyB3ZWxsCiIgc3luIG1hdGNoIGZvcnRyYW5Gb3JtYXRTcGVjCWRpc3BsYXkJIlw8XChhXHxpXClcZFwrIgoKIiBOdW1iZXJzIGFzIGxhYmVscwpzeW4gbWF0Y2ggZm9ydHJhbkxhYmVsTnVtYmVyCWRpc3BsYXkJIl5cZFx7MSw1fVxzIm1lPWUtMQpzeW4gbWF0Y2ggZm9ydHJhbkxhYmVsTnVtYmVyCWRpc3BsYXkJIl4gXGRcezEsNH1ccyJtcz1zKzEsbWU9ZS0xCnN5biBtYXRjaCBmb3J0cmFuTGFiZWxOdW1iZXIJZGlzcGxheQkiXiAgXGRcezEsM31ccyJtcz1zKzIsbWU9ZS0xCnN5biBtYXRjaCBmb3J0cmFuTGFiZWxOdW1iZXIJZGlzcGxheQkiXiAgIFxkXGRcPVxzIm1zPXMrMyxtZT1lLTEKc3luIG1hdGNoIGZvcnRyYW5MYWJlbE51bWJlcglkaXNwbGF5CSJeICAgIFxkXHMibXM9cys0LG1lPWUtMQoKaWYgdmVyc2lvbiA+PSA2MDAgJiYgZXhpc3RzKCJmb3J0cmFuX21vcmVfcHJlY2lzZSIpCiAgIiBOdW1iZXJzIGFzIHRhcmdldHMKICBzeW4gbWF0Y2ggZm9ydHJhblRhcmdldAlkaXNwbGF5CSJcKFw8aWZccyooLlwrKVxzKlwpXEA8PVwoXGRcK1xzKixccypcKVx7Mn1cZFwrXD4iCiAgc3luIG1hdGNoIGZvcnRyYW5UYXJnZXQJZGlzcGxheQkiXChcPGRvXHNcK1wpXEA8PVxkXCtcPiIKICBzeW4gbWF0Y2ggZm9ydHJhblRhcmdldAlkaXNwbGF5CSJcKFw8Z29ccyp0b1xzKihcPVwpXEA8PVwoXGRcK1xzKixccypcKSpcZFwrXD4iCmVuZGlmCgpzeW4ga2V5d29yZCBmb3J0cmFuVHlwZUV4CWV4dGVybmFsCnN5biBrZXl3b3JkIGZvcnRyYW5JT0V4CQlmb3JtYXQKc3luIGtleXdvcmQgZm9ydHJhbktleXdvcmRFeAljb250aW51ZQpzeW4gbWF0Y2ggZm9ydHJhbktleXdvcmRFeAkiXDxnb1xzKnRvXD4iCnN5biByZWdpb24gZm9ydHJhblN0cmluZ0V4CXN0YXJ0PSsnKyBlbmQ9KycrIGNvbnRhaW5zPWZvcnRyYW5Db250aW51ZU1hcmssZm9ydHJhbkxlZnRNYXJnaW4sZm9ydHJhblNlcmlhbE51bWJlcgpzeW4ga2V5d29yZCBmb3J0cmFuNzdJbnRyaW5zaWNFeAlkaW0gbGdlIGxndCBsbGUgbGx0IG1vZApzeW4ga2V5d29yZCBmb3J0cmFuS2V5d29yZE9iCWFzc2lnbiBwYXVzZSB0bwoKaWYgYjpmb3J0cmFuX2RpYWxlY3QgIT0gImY3NyIKCiAgc3luIG1hdGNoIGZvcnRyYW5UeXBlICAgICAgICAgIlw8dHlwZVw+IgogIHN5biBrZXl3b3JkIGZvcnRyYW5UeXBlCW5vbmUKCiAgc3luIGtleXdvcmQgZm9ydHJhblN0cnVjdHVyZQlwcml2YXRlIHB1YmxpYyBpbnRlbnQgb3B0aW9uYWwKICBzeW4ga2V5d29yZCBmb3J0cmFuU3RydWN0dXJlCXBvaW50ZXIgdGFyZ2V0IGFsbG9jYXRhYmxlCiAgc3luIGtleXdvcmQgZm9ydHJhblN0b3JhZ2VDbGFzcwlpbiBvdXQKICBzeW4gbWF0Y2ggZm9ydHJhblN0b3JhZ2VDbGFzcwkiXDxraW5kXHMqPSJtZT1zKzQKICBzeW4gbWF0Y2ggZm9ydHJhblN0b3JhZ2VDbGFzcwkiXDxsZW5ccyo9Im1lPXMrMwoKICBzeW4gbWF0Y2ggZm9ydHJhblVuaXRIZWFkZXIJIlw8bW9kdWxlXD4iCiAgc3luIGtleXdvcmQgZm9ydHJhblVuaXRIZWFkZXIJdXNlIG9ubHkgY29udGFpbnMKICBzeW4ga2V5d29yZCBmb3J0cmFuVW5pdEhlYWRlcglyZXN1bHQgb3BlcmF0b3IgYXNzaWdubWVudAogIHN5biBtYXRjaCBmb3J0cmFuVW5pdEhlYWRlcgkiXDxpbnRlcmZhY2VcPiIKICBzeW4gbWF0Y2ggZm9ydHJhblVuaXRIZWFkZXIJIlw8cmVjdXJzaXZlXD4iCiAgc3luIGtleXdvcmQgZm9ydHJhbktleXdvcmQJYWxsb2NhdGUgZGVhbGxvY2F0ZSBudWxsaWZ5IGN5Y2xlIGV4aXQKICBzeW4gbWF0Y2ggZm9ydHJhbkNvbmRpdGlvbmFsCSJcPHNlbGVjdFw+IgogIHN5biBrZXl3b3JkIGZvcnRyYW5Db25kaXRpb25hbAljYXNlIGRlZmF1bHQgd2hlcmUgZWxzZXdoZXJlCgogIHN5biBtYXRjaCBmb3J0cmFuT3BlcmF0b3IJIlwoXCg+XHw8XCk9XD1cfD09XHwvPVx8PVwpIgogIHN5biBtYXRjaCBmb3J0cmFuT3BlcmF0b3IJIj0+IgoKICBzeW4gcmVnaW9uIGZvcnRyYW5TdHJpbmcJc3RhcnQ9KyIrIGVuZD0rIisJY29udGFpbnM9Zm9ydHJhbkxlZnRNYXJnaW4sZm9ydHJhbkNvbnRpbnVlTWFyayxmb3J0cmFuU2VyaWFsTnVtYmVyCiAgc3luIGtleXdvcmQgZm9ydHJhbklPCQlwYWQgcG9zaXRpb24gYWN0aW9uIGRlbGltIHJlYWR3cml0ZQogIHN5biBrZXl3b3JkIGZvcnRyYW5JTwkJZW9yIGFkdmFuY2Ugbm1sCgogIHN5biBrZXl3b3JkIGZvcnRyYW45MEludHJpbnNpYwlhZGp1c3RsIGFkanVzdHIgYWxsIGFsbG9jYXRlZCBhbnkgYXNzb2NpYXRlZCBiaXRfc2l6ZSBidGVzdCBjZWlsaW5nIGNvdW50IGNzaGlmdCBkYXRlX2FuZF90aW1lIGRpZ2l0cyBkb3RfcHJvZHVjdCBlb3NoaWZ0IGVwc2lsb24gZXhwb25lbnQgZmxvb3IgZnJhY3Rpb24gaHVnZSBpYW5kIGliY2xyIGliaXRzIGlic2V0IGllb3IgaW9yIGlzaGZ0IGlzaGZ0YyBsYm91bmQgbGVuX3RyaW0gbWF0bXVsIG1heGV4cG9uZW50IG1heGxvYyBtYXh2YWwgbWVyZ2UgbWluZXhwb25lbnQgbWlubG9jIG1pbnZhbCBtb2R1bG8gbXZiaXRzIG5lYXJlc3QgcGFjayBwcmVjaXNpb24gcHJlc2VudCBwcm9kdWN0IHJhZGl4IHJhbmRvbV9udW1iZXIgcmFuZG9tX3NlZWQgcmFuZ2UgcmVwZWF0IHJlc2hhcGUgcnJzcGFjaW5nCiAgc3luIGtleXdvcmQgZm9ydHJhbjkwSW50cmluc2ljCXNjYWxlIHNjYW4gc2VsZWN0ZWRfaW50X2tpbmQgc2VsZWN0ZWRfcmVhbF9raW5kIHNldF9leHBvbmVudCBzaGFwZSBzaXplIHNwYWNpbmcgc3ByZWFkIHN1bSBzeXN0ZW1fY2xvY2sgdGlueSB0cmFuc3Bvc2UgdHJpbSB1Ym91bmQgdW5wYWNrIHZlcmlmeQogIHN5biBtYXRjaCBmb3J0cmFuOTBJbnRyaW5zaWMJCSJcPG5vdFw+XChccypcLlwpXEAhIm1lPXMrMwogIHN5biBtYXRjaCBmb3J0cmFuOTBJbnRyaW5zaWMJIlw8a2luZFw+XHMqWygsXSJtZT1zKzQKCiAgc3luIG1hdGNoICBmb3J0cmFuVW5pdEhlYWRlcgkiXDxlbmRccypmdW5jdGlvbiIKICBzeW4gbWF0Y2ggIGZvcnRyYW5Vbml0SGVhZGVyCSJcPGVuZFxzKmludGVyZmFjZSIKICBzeW4gbWF0Y2ggIGZvcnRyYW5Vbml0SGVhZGVyCSJcPGVuZFxzKm1vZHVsZSIKICBzeW4gbWF0Y2ggIGZvcnRyYW5Vbml0SGVhZGVyCSJcPGVuZFxzKnByb2dyYW0iCiAgc3luIG1hdGNoICBmb3J0cmFuVW5pdEhlYWRlcgkiXDxlbmRccypzdWJyb3V0aW5lIgogIHN5biBtYXRjaCAgZm9ydHJhblJlcGVhdAkiXDxlbmRccypkbyIKICBzeW4gbWF0Y2ggIGZvcnRyYW5Db25kaXRpb25hbAkiXDxlbmRccyp3aGVyZSIKICBzeW4gbWF0Y2ggIGZvcnRyYW5Db25kaXRpb25hbAkiXDxzZWxlY3RccypjYXNlIgogIHN5biBtYXRjaCAgZm9ydHJhbkNvbmRpdGlvbmFsCSJcPGVuZFxzKnNlbGVjdCIKICBzeW4gbWF0Y2ggIGZvcnRyYW5UeXBlCSJcPGVuZFxzKnR5cGUiCiAgc3luIG1hdGNoICBmb3J0cmFuVHlwZQkiXDxpblxzKm91dCIKCiAgc3luIGtleXdvcmQgZm9ydHJhblVuaXRIZWFkZXJFeAlwcm9jZWR1cmUKICBzeW4ga2V5d29yZCBmb3J0cmFuSU9FeAkJbmFtZWxpc3QKICBzeW4ga2V5d29yZCBmb3J0cmFuQ29uZGl0aW9uYWxFeAl3aGlsZQogIHN5biBrZXl3b3JkIGZvcnRyYW45MEludHJpbnNpY0V4CWFjaGFyIGlhY2hhciB0cmFuc2ZlcgoKICBzeW4ga2V5d29yZCBmb3J0cmFuSW5jbHVkZQkJaW5jbHVkZQogIHN5biBrZXl3b3JkIGZvcnRyYW45MFN0b3JhZ2VDbGFzc1IJc2VxdWVuY2UKZW5kaWYKCnN5biBtYXRjaCAgIGZvcnRyYW5Db25kaXRpb25hbAkiXDxlbmRccyppZiIKc3luIG1hdGNoICAgZm9ydHJhbklPCQljb250YWlucz1mb3J0cmFuT3BlcmF0b3IgIlw8ZVwobmRcfHJyXClccyo9XHMqXGRcKyIKc3luIG1hdGNoICAgZm9ydHJhbkNvbmRpdGlvbmFsCSJcPGVsc2VccyppZiIKCnN5biBrZXl3b3JkIGZvcnRyYW5Vbml0SGVhZGVyUgllbnRyeQpzeW4gbWF0Y2ggZm9ydHJhblR5cGVSCQlkaXNwbGF5ICJkb3VibGVcc1wrcHJlY2lzaW9uIgpzeW4gbWF0Y2ggZm9ydHJhblR5cGVSCQlkaXNwbGF5ICJkb3VibGVcc1wrY29tcGxleCIKc3luIG1hdGNoIGZvcnRyYW5Vbml0SGVhZGVyUglkaXNwbGF5ICJibG9ja1xzXCtkYXRhIgpzeW4ga2V5d29yZCBmb3J0cmFuU3RvcmFnZUNsYXNzUgljb21tb24gZXF1aXZhbGVuY2UgZGF0YQpzeW4ga2V5d29yZCBmb3J0cmFuNzdJbnRyaW5zaWNSCWRibGUgZHByb2QKc3luIG1hdGNoICAgZm9ydHJhbjc3T3BlcmF0b3JSCSJcLlxzKltnbF1bZXRdXHMqXC4iCnN5biBtYXRjaCAgIGZvcnRyYW43N09wZXJhdG9yUgkiXC5ccypcKGVxXHxuZVwpXHMqXC4iCgppZiBiOmZvcnRyYW5fZGlhbGVjdCA9PSAiZjk1IiB8fCBiOmZvcnRyYW5fZGlhbGVjdCA9PSAiRiIKICBzeW4ga2V5d29yZCBmb3J0cmFuUmVwZWF0CQlmb3JhbGwKICBzeW4gbWF0Y2ggZm9ydHJhblJlcGVhdAkJIlw8ZW5kXHMqZm9yYWxsIgogIHN5biBrZXl3b3JkIGZvcnRyYW45NUludHJpbnNpYwludWxsIGNwdV90aW1lCiAgc3luIG1hdGNoIGZvcnRyYW5UeXBlCQkJIlw8ZWxlbWVudGFsXD4iCiAgc3luIG1hdGNoIGZvcnRyYW5UeXBlCQkJIlw8cHVyZVw+IgogIGlmIGV4aXN0cygiZm9ydHJhbl9tb3JlX3ByZWNpc2UiKQogICAgc3luIG1hdGNoIGZvcnRyYW5Db25zdHJ1Y3ROYW1lICJcKFw8ZW5kXHMqZm9yYWxsXHNcK1wpXEA8PVxhXHcqXD4iCiAgZW5kaWYKZW5kaWYKCnN5biBjbHVzdGVyIGZvcnRyYW5Db21tZW50R3JvdXAgY29udGFpbnM9Zm9ydHJhblRvZG8KCmlmIChiOmZvcnRyYW5fZml4ZWRfc291cmNlID09IDEpCiAgaWYgIWV4aXN0cygiZm9ydHJhbl9oYXZlX3RhYnMiKQogICAgIkZsYWcgaXRlbXMgYmV5b25kIGNvbHVtbiA3MgogICAgc3luIG1hdGNoIGZvcnRyYW5TZXJpYWxOdW1iZXIJZXhjbHVkZW5sICJeLlx7NzMsfSQibGM9NzIKICAgICJGbGFnIGxlZnQgbWFyZ2luIGVycm9ycwogICAgc3luIG1hdGNoIGZvcnRyYW5MYWJlbEVycm9yCSJeLlx7LSw0fVteMC05IF0iIGNvbnRhaW5zPWZvcnRyYW5UYWIKICAgIHN5biBtYXRjaCBmb3J0cmFuTGFiZWxFcnJvcgkiXi5cezR9XGRcUyIKICBlbmRpZgogIHN5biBtYXRjaCBmb3J0cmFuQ29tbWVudAkJZXhjbHVkZW5sICJeWyFjKl0uKiQiIGNvbnRhaW5zPUBmb3J0cmFuQ29tbWVudEdyb3VwLEBzcGVsbAogIHN5biBtYXRjaCBmb3J0cmFuTGVmdE1hcmdpbgkJdHJhbnNwYXJlbnQgIl4gXHs1fSIKICBzeW4gbWF0Y2ggZm9ydHJhbkNvbnRpbnVlTWFyawkJZGlzcGxheSAiXi5cezV9XFMibGM9NQplbHNlCiAgc3luIG1hdGNoIGZvcnRyYW5Db250aW51ZU1hcmsJCWRpc3BsYXkgIiYiCmVuZGlmCgppZiBiOmZvcnRyYW5fZGlhbGVjdCAhPSAiZjc3IgogIHN5biBtYXRjaCBmb3J0cmFuQ29tbWVudAlleGNsdWRlbmwgIiEuKiQiIGNvbnRhaW5zPUBmb3J0cmFuQ29tbWVudEdyb3VwLEBzcGVsbAplbmRpZgoKImNwcCBpcyBvZnRlbiB1c2VkIHdpdGggRm9ydHJhbgpzeW4gbWF0Y2gJY1ByZVByb2MJCSJeXHMqI1xzKlwoZGVmaW5lXHxpZmRlZlwpXD4uKiIKc3luIG1hdGNoCWNQcmVQcm9jCQkiXlxzKiNccypcKGVsaWZcfGlmXClcPi4qIgpzeW4gbWF0Y2gJY1ByZVByb2MJCSJeXHMqI1xzKlwoaWZuZGVmXHx1bmRlZlwpXD4uKiIKc3luIG1hdGNoCWNQcmVDb25kaXQJCSJeXHMqI1xzKlwoZWxzZVx8ZW5kaWZcKVw+LioiCnN5biByZWdpb24JY0luY2x1ZGVkCWNvbnRhaW5lZCBzdGFydD0rIlteKF0rIHNraXA9K1xcXFxcfFxcIisgZW5kPSsiKyBjb250YWlucz1mb3J0cmFuTGVmdE1hcmdpbixmb3J0cmFuQ29udGludWVNYXJrLGZvcnRyYW5TZXJpYWxOdW1iZXIKc3luIG1hdGNoCWNJbmNsdWRlZAkJY29udGFpbmVkICI8W14+XSo+IgpzeW4gbWF0Y2gJY0luY2x1ZGUJCSJeXHMqI1xzKmluY2x1ZGVcPlxzKlsiPF0iIGNvbnRhaW5zPWNJbmNsdWRlZAoKIlN5bmNocm9uaXNpbmcgbGltaXRzIGFzc3VtZSB0aGF0IGNvbW1lbnQgYW5kIGNvbnRpbnVhdGlvbiBsaW5lcyBhcmUgbm90IG1peGVkCmlmIGV4aXN0cygiZm9ydHJhbl9mb2xkIikgfHwgZXhpc3RzKCJmb3J0cmFuX21vcmVfcHJlY2lzZSIpCiAgc3luIHN5bmMgZnJvbXN0YXJ0CmVsc2VpZiAoYjpmb3J0cmFuX2ZpeGVkX3NvdXJjZSA9PSAwKQogIHN5biBzeW5jIGxpbmVjb250ICImIiBtaW5saW5lcz0yMAplbHNlCiAgc3luIHN5bmMgbWlubGluZXM9MjAKZW5kaWYKCmlmIHZlcnNpb24gPj0gNjAwICYmIGV4aXN0cygiZm9ydHJhbl9mb2xkIikKCiAgaWYgKGI6Zm9ydHJhbl9maXhlZF9zb3VyY2UgPT0gMSkKICAgIHN5biByZWdpb24gZm9ydHJhblByb2dyYW0gdHJhbnNwYXJlbnQgZm9sZCBrZWVwZW5kIHN0YXJ0PSJeXHMqcHJvZ3JhbVxzXCtceihcYVx3KlwpIiBza2lwPSJeXChbIWMqXVx8XHMqI1wpLiokIiBleGNsdWRlbmwgZW5kPSJcPGVuZFxzKlwocHJvZ3JhbVwoXHNcK1x6MVw+XClcPVx8JFwpIiBjb250YWlucz1BTExCVVQsZm9ydHJhbk1vZHVsZQogICAgc3luIHJlZ2lvbiBmb3J0cmFuTW9kdWxlIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBzdGFydD0iXlxzKm1vZHVsZVxzXCtcKHByb2NlZHVyZVwpXEAhXHooXGFcdypcKSIgc2tpcD0iXlwoWyFjKl1cfFxzKiNcKS4qJCIgZXhjbHVkZW5sIGVuZD0iXDxlbmRccypcKG1vZHVsZVwoXHNcK1x6MVw+XClcPVx8JFwpIiBjb250YWlucz1BTExCVVQsZm9ydHJhblByb2dyYW0KICAgIHN5biByZWdpb24gZm9ydHJhbkZ1bmN0aW9uIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBleHRlbmQgc3RhcnQ9Il5ccypcKGVsZW1lbnRhbCBcfHB1cmUgXHxyZWN1cnNpdmUgXClcPVxzKlwoXChcKHJlYWwgXHxpbnRlZ2VyIFx8bG9naWNhbCBcfGNvbXBsZXggXHxkb3VibGUgXHMqcHJlY2lzaW9uIFwpXHMqXCgoXChccypraW5kXHMqPVwpXD1ccypcd1wrXHMqKVwpXD1cKVx8dHlwZVxzXCsoXHMqXHdcK1xzKikgXHxjaGFyYWN0ZXIgXCgoXChccypsZW5ccyo9XClcPVxzKlxkXCtccyopXHwoXChccypraW5kXHMqPVwpXD1ccypcd1wrXHMqKVwpXD1cKVw9XHMqZnVuY3Rpb25cc1wrXHooXGFcdypcKSIgc2tpcD0iXlwoWyFjKl1cfFxzKiNcKS4qJCIgZXhjbHVkZW5sIGVuZD0iXDxlbmRccypcKCRcfGZ1bmN0aW9uXChcc1wrXHoxXD5cKVw9XCkiIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuUHJvZ3JhbSxmb3J0cmFuTW9kdWxlCiAgICBzeW4gcmVnaW9uIGZvcnRyYW5TdWJyb3V0aW5lIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBleHRlbmQgc3RhcnQ9Il5ccypcKGVsZW1lbnRhbCBcfHB1cmUgXHxyZWN1cnNpdmUgXClcPVxzKnN1YnJvdXRpbmVcc1wrXHooXGFcdypcKSIgc2tpcD0iXlwoWyFjKl1cfFxzKiNcKS4qJCIgZXhjbHVkZW5sIGVuZD0iXDxlbmRccypcKCRcfHN1YnJvdXRpbmVcKFxzXCtcejFcPlwpXD1cKSIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Qcm9ncmFtLGZvcnRyYW5Nb2R1bGUKICAgIHN5biByZWdpb24gZm9ydHJhbkJsb2NrRGF0YSB0cmFuc3BhcmVudCBmb2xkIGtlZXBlbmQgc3RhcnQ9Ilw8YmxvY2tccypkYXRhXHNcK1x6KFxhXHcqXCkiIHNraXA9Il5cKFshYypdXHxccyojXCkuKiQiIGV4Y2x1ZGVubCBlbmQ9Ilw8ZW5kXHMqXCgkXHxibG9ja1xzKmRhdGFcKFxzXCtcejFcPlwpXD1cKSIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Qcm9ncmFtLGZvcnRyYW5Nb2R1bGUsZm9ydHJhblN1YnJvdXRpbmUsZm9ydHJhbkZ1bmN0aW9uLGZvcnRyYW43N0xvb3AsZm9ydHJhbkNhc2UsZm9ydHJhbjkwTG9vcCxmb3J0cmFuSWZCbG9jawogICAgc3luIHJlZ2lvbiBmb3J0cmFuSW50ZXJmYWNlIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBleHRlbmQgc3RhcnQ9Il5ccyppbnRlcmZhY2VcPiIgc2tpcD0iXlwoWyFjKl1cfFxzKiNcKS4qJCIgZXhjbHVkZW5sIGVuZD0iXDxlbmRccyppbnRlcmZhY2VcPiIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Qcm9ncmFtLGZvcnRyYW5Nb2R1bGUsZm9ydHJhbjc3TG9vcCxmb3J0cmFuQ2FzZSxmb3J0cmFuOTBMb29wLGZvcnRyYW5JZkJsb2NrCiAgZWxzZQogICAgc3luIHJlZ2lvbiBmb3J0cmFuUHJvZ3JhbSB0cmFuc3BhcmVudCBmb2xkIGtlZXBlbmQgc3RhcnQ9Il5ccypwcm9ncmFtXHNcK1x6KFxhXHcqXCkiIHNraXA9Il5ccypbISNdLiokIiBleGNsdWRlbmwgZW5kPSJcPGVuZFxzKlwocHJvZ3JhbVwoXHNcK1x6MVw+XClcPVx8JFwpIiBjb250YWlucz1BTExCVVQsZm9ydHJhbk1vZHVsZQogICAgc3luIHJlZ2lvbiBmb3J0cmFuTW9kdWxlIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBzdGFydD0iXlxzKm1vZHVsZVxzXCtcKHByb2NlZHVyZVwpXEAhXHooXGFcdypcKSIgc2tpcD0iXlxzKlshI10uKiQiIGV4Y2x1ZGVubCBlbmQ9Ilw8ZW5kXHMqXChtb2R1bGVcKFxzXCtcejFcPlwpXD1cfCRcKSIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Qcm9ncmFtCiAgICBzeW4gcmVnaW9uIGZvcnRyYW5GdW5jdGlvbiB0cmFuc3BhcmVudCBmb2xkIGtlZXBlbmQgZXh0ZW5kIHN0YXJ0PSJeXHMqXChlbGVtZW50YWwgXHxwdXJlIFx8cmVjdXJzaXZlIFwpXD1ccypcKFwoXChyZWFsIFx8aW50ZWdlciBcfGxvZ2ljYWwgXHxjb21wbGV4IFx8ZG91YmxlIFxzKnByZWNpc2lvbiBcKVxzKlwoKFwoXHMqa2luZFxzKj1cKVw9XHMqXHdcK1xzKilcKVw9XClcfHR5cGVcc1wrKFxzKlx3XCtccyopIFx8Y2hhcmFjdGVyIFwoKFwoXHMqbGVuXHMqPVwpXD1ccypcZFwrXHMqKVx8KFwoXHMqa2luZFxzKj1cKVw9XHMqXHdcK1xzKilcKVw9XClcPVxzKmZ1bmN0aW9uXHNcK1x6KFxhXHcqXCkiIHNraXA9Il5ccypbISNdLiokIiBleGNsdWRlbmwgZW5kPSJcPGVuZFxzKlwoJFx8ZnVuY3Rpb25cKFxzXCtcejFcPlwpXD1cKSIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Qcm9ncmFtLGZvcnRyYW5Nb2R1bGUKICAgIHN5biByZWdpb24gZm9ydHJhblN1YnJvdXRpbmUgdHJhbnNwYXJlbnQgZm9sZCBrZWVwZW5kIGV4dGVuZCBzdGFydD0iXlxzKlwoZWxlbWVudGFsIFx8cHVyZSBcfHJlY3Vyc2l2ZSBcKVw9XHMqc3Vicm91dGluZVxzXCtceihcYVx3KlwpIiBza2lwPSJeXHMqWyEjXS4qJCIgZXhjbHVkZW5sIGVuZD0iXDxlbmRccypcKCRcfHN1YnJvdXRpbmVcKFxzXCtcejFcPlwpXD1cKSIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Qcm9ncmFtLGZvcnRyYW5Nb2R1bGUKICAgIHN5biByZWdpb24gZm9ydHJhbkJsb2NrRGF0YSB0cmFuc3BhcmVudCBmb2xkIGtlZXBlbmQgc3RhcnQ9Ilw8YmxvY2tccypkYXRhXHNcK1x6KFxhXHcqXCkiIHNraXA9Il5ccypbISNdLiokIiBleGNsdWRlbmwgZW5kPSJcPGVuZFxzKlwoJFx8YmxvY2tccypkYXRhXChcc1wrXHoxXD5cKVw9XCkiIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuUHJvZ3JhbSxmb3J0cmFuTW9kdWxlLGZvcnRyYW5TdWJyb3V0aW5lLGZvcnRyYW5GdW5jdGlvbixmb3J0cmFuNzdMb29wLGZvcnRyYW5DYXNlLGZvcnRyYW45MExvb3AsZm9ydHJhbklmQmxvY2sKICAgIHN5biByZWdpb24gZm9ydHJhbkludGVyZmFjZSB0cmFuc3BhcmVudCBmb2xkIGtlZXBlbmQgZXh0ZW5kIHN0YXJ0PSJeXHMqaW50ZXJmYWNlXD4iIHNraXA9Il5ccypbISNdLiokIiBleGNsdWRlbmwgZW5kPSJcPGVuZFxzKmludGVyZmFjZVw+IiBjb250YWlucz1BTExCVVQsZm9ydHJhblByb2dyYW0sZm9ydHJhbk1vZHVsZSxmb3J0cmFuNzdMb29wLGZvcnRyYW5DYXNlLGZvcnRyYW45MExvb3AsZm9ydHJhbklmQmxvY2sKICBlbmRpZgoKICBpZiBleGlzdHMoImZvcnRyYW5fZm9sZF9jb25kaXRpb25hbHMiKQogICAgaWYgKGI6Zm9ydHJhbl9maXhlZF9zb3VyY2UgPT0gMSkKICAgICAgc3luIHJlZ2lvbiBmb3J0cmFuNzdMb29wIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBzdGFydD0iXDxkb1xzXCtceihcZFwrXCkiIGVuZD0iXlxzKlx6MVw+IiBjb250YWlucz1BTExCVVQsZm9ydHJhblVuaXRIZWFkZXIsZm9ydHJhblN0cnVjdHVyZSxmb3J0cmFuU3RvcmFnZUNsYXNzLGZvcnRyYW5UeXBlLGZvcnRyYW5Qcm9ncmFtLGZvcnRyYW5Nb2R1bGUsZm9ydHJhblN1YnJvdXRpbmUsZm9ydHJhbkZ1bmN0aW9uLGZvcnRyYW5CbG9ja0RhdGEKICAgICAgc3luIHJlZ2lvbiBmb3J0cmFuOTBMb29wIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBleHRlbmQgc3RhcnQ9IlwoXDxlbmRcc1wrXClcQDwhXDxkb1woXHNcK1xhXHxccyokXCkiIHNraXA9Il5cKFshYypdXHxccyojXCkuKiQiIGV4Y2x1ZGVubCBlbmQ9Ilw8ZW5kXHMqZG9cPiIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Vbml0SGVhZGVyLGZvcnRyYW5TdHJ1Y3R1cmUsZm9ydHJhblN0b3JhZ2VDbGFzcyxmb3J0cmFuVHlwZSxmb3J0cmFuUHJvZ3JhbSxmb3J0cmFuTW9kdWxlLGZvcnRyYW5TdWJyb3V0aW5lLGZvcnRyYW5GdW5jdGlvbixmb3J0cmFuQmxvY2tEYXRhCiAgICAgIHN5biByZWdpb24gZm9ydHJhbklmQmxvY2sgdHJhbnNwYXJlbnQgZm9sZCBrZWVwZW5kIGV4dGVuZCBzdGFydD0iXChcPGVcKG5kXHxsc2VcKVxzXCtcKVxAPCFcPGlmXHMqKC5cKylccyp0aGVuXD4iIHNraXA9Il5cKFshYypdXHxccyojXCkuKiQiIGVuZD0iXDxlbmRccyppZlw+IiBjb250YWlucz1BTExCVVQsZm9ydHJhblVuaXRIZWFkZXIsZm9ydHJhblN0cnVjdHVyZSxmb3J0cmFuU3RvcmFnZUNsYXNzLGZvcnRyYW5UeXBlLGZvcnRyYW5Qcm9ncmFtLGZvcnRyYW5Nb2R1bGUsZm9ydHJhblN1YnJvdXRpbmUsZm9ydHJhbkZ1bmN0aW9uLGZvcnRyYW5CbG9ja0RhdGEKICAgICAgc3luIHJlZ2lvbiBmb3J0cmFuQ2FzZSB0cmFuc3BhcmVudCBmb2xkIGtlZXBlbmQgZXh0ZW5kIHN0YXJ0PSJcPHNlbGVjdFxzKmNhc2VcPiIgc2tpcD0iXlwoWyFjKl1cfFxzKiNcKS4qJCIgZW5kPSJcPGVuZFxzKnNlbGVjdFw+IiBjb250YWlucz1BTExCVVQsZm9ydHJhblVuaXRIZWFkZXIsZm9ydHJhblN0cnVjdHVyZSxmb3J0cmFuU3RvcmFnZUNsYXNzLGZvcnRyYW5UeXBlLGZvcnRyYW5Qcm9ncmFtLGZvcnRyYW5Nb2R1bGUsZm9ydHJhblN1YnJvdXRpbmUsZm9ydHJhbkZ1bmN0aW9uLGZvcnRyYW5CbG9ja0RhdGEKICAgIGVsc2UKICAgICAgc3luIHJlZ2lvbiBmb3J0cmFuNzdMb29wIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBzdGFydD0iXDxkb1xzXCtceihcZFwrXCkiIGVuZD0iXlxzKlx6MVw+IiBjb250YWlucz1BTExCVVQsZm9ydHJhblVuaXRIZWFkZXIsZm9ydHJhblN0cnVjdHVyZSxmb3J0cmFuU3RvcmFnZUNsYXNzLGZvcnRyYW5UeXBlLGZvcnRyYW5Qcm9ncmFtLGZvcnRyYW5Nb2R1bGUsZm9ydHJhblN1YnJvdXRpbmUsZm9ydHJhbkZ1bmN0aW9uLGZvcnRyYW5CbG9ja0RhdGEKICAgICAgc3luIHJlZ2lvbiBmb3J0cmFuOTBMb29wIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBleHRlbmQgc3RhcnQ9IlwoXDxlbmRcc1wrXClcQDwhXDxkb1woXHNcK1xhXHxccyokXCkiIHNraXA9Il5ccypbISNdLiokIiBleGNsdWRlbmwgZW5kPSJcPGVuZFxzKmRvXD4iIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuVW5pdEhlYWRlcixmb3J0cmFuU3RydWN0dXJlLGZvcnRyYW5TdG9yYWdlQ2xhc3MsZm9ydHJhblR5cGUsZm9ydHJhblByb2dyYW0sZm9ydHJhbk1vZHVsZSxmb3J0cmFuU3Vicm91dGluZSxmb3J0cmFuRnVuY3Rpb24sZm9ydHJhbkJsb2NrRGF0YQogICAgICBzeW4gcmVnaW9uIGZvcnRyYW5JZkJsb2NrIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBleHRlbmQgc3RhcnQ9IlwoXDxlXChuZFx8bHNlXClcc1wrXClcQDwhXDxpZlxzKiguXCspXHMqdGhlblw+IiBza2lwPSJeXHMqWyEjXS4qJCIgZW5kPSJcPGVuZFxzKmlmXD4iIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuVW5pdEhlYWRlcixmb3J0cmFuU3RydWN0dXJlLGZvcnRyYW5TdG9yYWdlQ2xhc3MsZm9ydHJhblR5cGUsZm9ydHJhblByb2dyYW0sZm9ydHJhbk1vZHVsZSxmb3J0cmFuU3Vicm91dGluZSxmb3J0cmFuRnVuY3Rpb24sZm9ydHJhbkJsb2NrRGF0YQogICAgICBzeW4gcmVnaW9uIGZvcnRyYW5DYXNlIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBleHRlbmQgc3RhcnQ9Ilw8c2VsZWN0XHMqY2FzZVw+IiBza2lwPSJeXHMqWyEjXS4qJCIgZW5kPSJcPGVuZFxzKnNlbGVjdFw+IiBjb250YWlucz1BTExCVVQsZm9ydHJhblVuaXRIZWFkZXIsZm9ydHJhblN0cnVjdHVyZSxmb3J0cmFuU3RvcmFnZUNsYXNzLGZvcnRyYW5UeXBlLGZvcnRyYW5Qcm9ncmFtLGZvcnRyYW5Nb2R1bGUsZm9ydHJhblN1YnJvdXRpbmUsZm9ydHJhbkZ1bmN0aW9uLGZvcnRyYW5CbG9ja0RhdGEKICAgIGVuZGlmCiAgZW5kaWYKCiAgaWYgZXhpc3RzKCJmb3J0cmFuX2ZvbGRfbXVsdGlsaW5lY29tbWVudHMiKQogICAgaWYgKGI6Zm9ydHJhbl9maXhlZF9zb3VyY2UgPT0gMSkKICAgICAgc3luIG1hdGNoIGZvcnRyYW5NdWx0aUxpbmVDb21tZW50cyB0cmFuc3BhcmVudCBmb2xkICJcKF5bIWMqXS4qXChcblx8XCUkXClcKVx7NCx9IiBjb250YWlucz1BTExCVVQsZm9ydHJhbk11bHRpQ29tbWVudExpbmVzCiAgICBlbHNlCiAgICAgIHN5biBtYXRjaCBmb3J0cmFuTXVsdGlMaW5lQ29tbWVudHMgdHJhbnNwYXJlbnQgZm9sZCAiXCheXHMqIS4qXChcblx8XCUkXClcKVx7NCx9IiBjb250YWlucz1BTExCVVQsZm9ydHJhbk11bHRpQ29tbWVudExpbmVzCiAgICBlbmRpZgogIGVuZGlmCmVuZGlmCgoiIERlZmluZSB0aGUgZGVmYXVsdCBoaWdobGlnaHRpbmcuCiIgRm9yIHZlcnNpb24gNS43IGFuZCBlYXJsaWVyOiBvbmx5IHdoZW4gbm90IGRvbmUgYWxyZWFkeQoiIEZvciB2ZXJzaW9uIDUuOCBhbmQgbGF0ZXI6IG9ubHkgd2hlbiBhbiBpdGVtIGRvZXNuJ3QgaGF2ZSBoaWdobGlnaHRpbmcgeWV0CmlmIHZlcnNpb24gPj0gNTA4IHx8ICFleGlzdHMoImRpZF9mb3J0cmFuX3N5bl9pbml0cyIpCiAgaWYgdmVyc2lvbiA8IDUwOAogICAgbGV0IGRpZF9mb3J0cmFuX3N5bl9pbml0cyA9IDEKICAgIGNvbW1hbmQgLW5hcmdzPSsgSGlMaW5rIGhpIGxpbmsgPGFyZ3M+CiAgZWxzZQogICAgY29tbWFuZCAtbmFyZ3M9KyBIaUxpbmsgaGkgZGVmIGxpbmsgPGFyZ3M+CiAgZW5kaWYKCiAgIiBUaGUgZGVmYXVsdCBoaWdobGlnaHRpbmcgZGlmZmVycyBmb3IgZWFjaCBkaWFsZWN0LgogICIgVHJhbnNwYXJlbnQgZ3JvdXBzOgogICIgZm9ydHJhblBhcmVuLCBmb3J0cmFuTGVmdE1hcmdpbgogICIgZm9ydHJhblByb2dyYW0sIGZvcnRyYW5Nb2R1bGUsIGZvcnRyYW5TdWJyb3V0aW5lLCBmb3J0cmFuRnVuY3Rpb24sCiAgIiBmb3J0cmFuQmxvY2tEYXRhCiAgIiBmb3J0cmFuNzdMb29wLCBmb3J0cmFuOTBMb29wLCBmb3J0cmFuSWZCbG9jaywgZm9ydHJhbkNhc2UKICAiIGZvcnRyYW5NdWx0aUNvbW1lbnRMaW5lcwogIEhpTGluayBmb3J0cmFuS2V5d29yZCAJS2V5d29yZAogIEhpTGluayBmb3J0cmFuQ29uc3RydWN0TmFtZQlJZGVudGlmaWVyCiAgSGlMaW5rIGZvcnRyYW5Db25kaXRpb25hbAlDb25kaXRpb25hbAogIEhpTGluayBmb3J0cmFuUmVwZWF0CQlSZXBlYXQKICBIaUxpbmsgZm9ydHJhblRvZG8JCVRvZG8KICBIaUxpbmsgZm9ydHJhbkNvbnRpbnVlTWFyawlUb2RvCiAgSGlMaW5rIGZvcnRyYW5TdHJpbmcJCVN0cmluZwogIEhpTGluayBmb3J0cmFuTnVtYmVyCQlOdW1iZXIKICBIaUxpbmsgZm9ydHJhbk9wZXJhdG9yCU9wZXJhdG9yCiAgSGlMaW5rIGZvcnRyYW5Cb29sZWFuCQlCb29sZWFuCiAgSGlMaW5rIGZvcnRyYW5MYWJlbEVycm9yCUVycm9yCiAgSGlMaW5rIGZvcnRyYW5PYnNvbGV0ZQlUb2RvCiAgSGlMaW5rIGZvcnRyYW5UeXBlCQlUeXBlCiAgSGlMaW5rIGZvcnRyYW5TdHJ1Y3R1cmUJVHlwZQogIEhpTGluayBmb3J0cmFuU3RvcmFnZUNsYXNzCVN0b3JhZ2VDbGFzcwogIEhpTGluayBmb3J0cmFuQ2FsbAkJZm9ydHJhblVuaXRIZWFkZXIKICBIaUxpbmsgZm9ydHJhblVuaXRIZWFkZXIJZm9ydHJhblByZUNvbmRpdAogIEhpTGluayBmb3J0cmFuUmVhZFdyaXRlCUtleXdvcmQKICBIaUxpbmsgZm9ydHJhbklPCQlLZXl3b3JkCiAgSGlMaW5rIGZvcnRyYW45NUludHJpbnNpYwlmb3J0cmFuOTBJbnRyaW5zaWMKICBIaUxpbmsgZm9ydHJhbjc3SW50cmluc2ljCWZvcnRyYW45MEludHJpbnNpYwogIEhpTGluayBmb3J0cmFuOTBJbnRyaW5zaWMJRnVuY3Rpb24KCiAgaWYgKCBiOmZvcnRyYW5fZGlhbGVjdCA9PSAiZWxmIiB8fCBiOmZvcnRyYW5fZGlhbGVjdCA9PSAiRiIgKQogICAgSGlMaW5rIGZvcnRyYW5LZXl3b3JkT2IJZm9ydHJhbk9ic29sZXRlCiAgICBIaUxpbmsgZm9ydHJhbjY2SW50cmluc2ljCWZvcnRyYW5PYnNvbGV0ZQogICAgSGlMaW5rIGZvcnRyYW43N0ludHJpbnNpY1IJZm9ydHJhbk9ic29sZXRlCiAgICBIaUxpbmsgZm9ydHJhblVuaXRIZWFkZXJSCWZvcnRyYW5PYnNvbGV0ZQogICAgSGlMaW5rIGZvcnRyYW5UeXBlUgkJZm9ydHJhbk9ic29sZXRlCiAgICBIaUxpbmsgZm9ydHJhblN0b3JhZ2VDbGFzc1IJZm9ydHJhbk9ic29sZXRlCiAgICBIaUxpbmsgZm9ydHJhbjkwU3RvcmFnZUNsYXNzUglmb3J0cmFuT2Jzb2xldGUKICAgIEhpTGluayBmb3J0cmFuNzdPcGVyYXRvclIJZm9ydHJhbk9ic29sZXRlCiAgICBIaUxpbmsgZm9ydHJhbkluY2x1ZGUJZm9ydHJhbk9ic29sZXRlCiAgZWxzZQogICAgSGlMaW5rIGZvcnRyYW5LZXl3b3JkT2IJZm9ydHJhbktleXdvcmQKICAgIEhpTGluayBmb3J0cmFuNjZJbnRyaW5zaWMJZm9ydHJhbjkwSW50cmluc2ljCiAgICBIaUxpbmsgZm9ydHJhbjc3SW50cmluc2ljUglmb3J0cmFuOTBJbnRyaW5zaWMKICAgIEhpTGluayBmb3J0cmFuVW5pdEhlYWRlclIJZm9ydHJhblByZUNvbmRpdAogICAgSGlMaW5rIGZvcnRyYW5UeXBlUgkJZm9ydHJhblR5cGUKICAgIEhpTGluayBmb3J0cmFuU3RvcmFnZUNsYXNzUglmb3J0cmFuU3RvcmFnZUNsYXNzCiAgICBIaUxpbmsgZm9ydHJhbjc3T3BlcmF0b3JSCWZvcnRyYW5PcGVyYXRvcgogICAgSGlMaW5rIGZvcnRyYW5JbmNsdWRlCUluY2x1ZGUKICAgIEhpTGluayBmb3J0cmFuOTBTdG9yYWdlQ2xhc3NSCWZvcnRyYW5TdG9yYWdlQ2xhc3MKICBlbmRpZgoKICBpZiAoIGI6Zm9ydHJhbl9kaWFsZWN0ID09ICJGIiApCiAgICBIaUxpbmsgZm9ydHJhbkxhYmVsTnVtYmVyCWZvcnRyYW5PYnNvbGV0ZQogICAgSGlMaW5rIGZvcnRyYW5UYXJnZXQJZm9ydHJhbk9ic29sZXRlCiAgICBIaUxpbmsgZm9ydHJhbkZvcm1hdFNwZWMJZm9ydHJhbk9ic29sZXRlCiAgICBIaUxpbmsgZm9ydHJhbkZsb2F0REV4cAlmb3J0cmFuT2Jzb2xldGUKICAgIEhpTGluayBmb3J0cmFuRmxvYXROb0RlYwlmb3J0cmFuT2Jzb2xldGUKICAgIEhpTGluayBmb3J0cmFuRmxvYXRJbmlEZWMJZm9ydHJhbk9ic29sZXRlCiAgICBIaUxpbmsgZm9ydHJhbkZsb2F0RW5kRGVjCWZvcnRyYW5PYnNvbGV0ZQogICAgSGlMaW5rIGZvcnRyYW5UeXBlRXgJZm9ydHJhbk9ic29sZXRlCiAgICBIaUxpbmsgZm9ydHJhbklPRXgJCWZvcnRyYW5PYnNvbGV0ZQogICAgSGlMaW5rIGZvcnRyYW5LZXl3b3JkRXgJZm9ydHJhbk9ic29sZXRlCiAgICBIaUxpbmsgZm9ydHJhblN0cmluZ0V4CWZvcnRyYW5PYnNvbGV0ZQogICAgSGlMaW5rIGZvcnRyYW43N0ludHJpbnNpY0V4CWZvcnRyYW5PYnNvbGV0ZQogICAgSGlMaW5rIGZvcnRyYW5Vbml0SGVhZGVyRXgJZm9ydHJhbk9ic29sZXRlCiAgICBIaUxpbmsgZm9ydHJhbkNvbmRpdGlvbmFsRXgJZm9ydHJhbk9ic29sZXRlCiAgICBIaUxpbmsgZm9ydHJhbjkwSW50cmluc2ljRXgJZm9ydHJhbk9ic29sZXRlCiAgZWxzZQogICAgSGlMaW5rIGZvcnRyYW5MYWJlbE51bWJlcglTcGVjaWFsCiAgICBIaUxpbmsgZm9ydHJhblRhcmdldAlTcGVjaWFsCiAgICBIaUxpbmsgZm9ydHJhbkZvcm1hdFNwZWMJSWRlbnRpZmllcgogICAgSGlMaW5rIGZvcnRyYW5GbG9hdERFeHAJZm9ydHJhbkZsb2F0CiAgICBIaUxpbmsgZm9ydHJhbkZsb2F0Tm9EZWMJZm9ydHJhbkZsb2F0CiAgICBIaUxpbmsgZm9ydHJhbkZsb2F0SW5pRGVjCWZvcnRyYW5GbG9hdAogICAgSGlMaW5rIGZvcnRyYW5GbG9hdEVuZERlYwlmb3J0cmFuRmxvYXQKICAgIEhpTGluayBmb3J0cmFuVHlwZUV4CWZvcnRyYW5UeXBlCiAgICBIaUxpbmsgZm9ydHJhbklPRXgJCWZvcnRyYW5JTwogICAgSGlMaW5rIGZvcnRyYW5LZXl3b3JkRXgJZm9ydHJhbktleXdvcmQKICAgIEhpTGluayBmb3J0cmFuU3RyaW5nRXgJZm9ydHJhblN0cmluZwogICAgSGlMaW5rIGZvcnRyYW43N0ludHJpbnNpY0V4CWZvcnRyYW45MEludHJpbnNpYwogICAgSGlMaW5rIGZvcnRyYW5Vbml0SGVhZGVyRXgJZm9ydHJhblVuaXRIZWFkZXIKICAgIEhpTGluayBmb3J0cmFuQ29uZGl0aW9uYWxFeAlmb3J0cmFuQ29uZGl0aW9uYWwKICAgIEhpTGluayBmb3J0cmFuOTBJbnRyaW5zaWNFeAlmb3J0cmFuOTBJbnRyaW5zaWMKICBlbmRpZgoKICBIaUxpbmsgZm9ydHJhbkZsb2F0CQlGbG9hdAogIEhpTGluayBmb3J0cmFuUHJlQ29uZGl0CVByZUNvbmRpdAogIEhpTGluayBmb3J0cmFuSW5jbHVkZQkJSW5jbHVkZQogIEhpTGluayBjSW5jbHVkZWQJCWZvcnRyYW5TdHJpbmcKICBIaUxpbmsgY0luY2x1ZGUJCUluY2x1ZGUKICBIaUxpbmsgY1ByZVByb2MJCVByZVByb2MKICBIaUxpbmsgY1ByZUNvbmRpdAkJUHJlQ29uZGl0CiAgSGlMaW5rIGZvcnRyYW5QYXJlbkVycm9yCUVycm9yCiAgSGlMaW5rIGZvcnRyYW5Db21tZW50CQlDb21tZW50CiAgSGlMaW5rIGZvcnRyYW5TZXJpYWxOdW1iZXIJVG9kbwogIEhpTGluayBmb3J0cmFuVGFiCQlFcnJvcgogICIgVmVuZG9yIGV4dGVuc2lvbnMKICBIaUxpbmsgZm9ydHJhbkV4dHJhSW50cmluc2ljCUZ1bmN0aW9uCgogIGRlbGNvbW1hbmQgSGlMaW5rCmVuZGlmCgpsZXQgYjpjdXJyZW50X3N5bnRheCA9ICJmb3J0cmFuIgoKIiB2aW06IHRzPTggdHc9MTMyCg==