IiBWaW0gc3ludGF4IGZpbGUKIiBMYW5ndWFnZToJRm9ydHJhbjk1IChhbmQgRm9ydHJhbjkwLCBGb3J0cmFuNzcsIEYgYW5kIGVsZjkwKQoiIFZlcnNpb246CTAuODgKIiBVUkw6CQlodHRwOi8vd3d3LnVuYi5jYS9jaGVtL2FqaXQvc3ludGF4L2ZvcnRyYW4udmltCiIgTGFzdCBDaGFuZ2U6CTIwMDYgQXByLiAyMgoiIE1haW50YWluZXI6CUFqaXQgSi4gVGhha2thciAoYWppdCBBVCB1bmIuY2EpOyA8aHR0cDovL3d3dy51bmIuY2EvY2hlbS9haml0Lz4KIiBVc2FnZToJRG8gOmhlbHAgZm9ydHJhbi1zeW50YXggZnJvbSBWaW0KIiBDcmVkaXRzOgoiICBWZXJzaW9uIDAuMSB3YXMgYmFzZWQgb24gdGhlIGZvcnRyYW4gNzcgc3ludGF4IGZpbGUgYnkgTWFyaW8gRXVzZWJpbyBhbmQKIiAgUHJlYmVuIEd1bGRiZXJnLiBVc2VmdWwgc3VnZ2VzdGlvbnMgd2VyZSBtYWRlIGJ5OiBBbmRyZWogUGFuamtvdiwKIiAgQnJhbSBNb29sZW5hYXIsIFRob21hcyBPbHNlbiwgTWljaGFlbCBTdGVybmJlcmcsIENocmlzdGlhbiBSZWlsZSwKIiAgV2FsdGVyIERpZXVkb25u6SwgQWxleGFuZGVyIFdhZ25lciwgUm9tYW4gQmVydGxlLCBDaGFybGVzIFJlbmRsZW1hbiwKIiAgYW5kIEFuZHJldyBHcmlmZml0aHMuIEZvciBpbnN0cnVjdGlvbnMgb24gdXNlLCBkbyA6aGVscCBmb3J0cmFuIGZyb20gdmltCgoiIEZvciB2ZXJzaW9uIDUueDogQ2xlYXIgYWxsIHN5bnRheCBpdGVtcwoiIEZvciB2ZXJzaW9uIDYueDogUXVpdCBpZiBhIHN5bnRheCBmaWxlIGlzIGFscmVhZHkgbG9hZGVkCmlmIHZlcnNpb24gPCA2MDAKICBzeW50YXggY2xlYXIKZWxzZWlmIGV4aXN0cygiYjpjdXJyZW50X3N5bnRheCIpCiAgZmluaXNoCmVuZGlmCgoiIGxldCBiOmZvcnRyYW5fZGlhbGVjdCA9IGZvcnRyYW5fZGlhbGVjdCBpZiBzZXQgY29ycmVjdGx5IGJ5IHVzZXIKaWYgZXhpc3RzKCJmb3J0cmFuX2RpYWxlY3QiKQogIGlmIGZvcnRyYW5fZGlhbGVjdCA9fiAnXDxcKGZcKDlbMDVdXHw3N1wpXHxlbGZcfEZcKVw+JwogICAgbGV0IGI6Zm9ydHJhbl9kaWFsZWN0ID0gbWF0Y2hzdHIoZm9ydHJhbl9kaWFsZWN0LCdcPFwoZlwoOVswNV1cfDc3XClcfGVsZlx8RlwpXD4nKQogIGVsc2UKICAgIGVjaG9obCBXYXJuaW5nTXNnIHwgZWNobyAiVW5rbm93biB2YWx1ZSBvZiBmb3J0cmFuX2RpYWxlY3QiIHwgZWNob2hsIE5vbmUKICAgIGxldCBiOmZvcnRyYW5fZGlhbGVjdCA9ICJ1bmtub3duIgogIGVuZGlmCmVsc2UKICBsZXQgYjpmb3J0cmFuX2RpYWxlY3QgPSAidW5rbm93biIKZW5kaWYKCiIgZm9ydHJhbl9kaWFsZWN0IG5vdCBzZXQgb3Igc2V0IGluY29ycmVjdGx5IGJ5IHVzZXIsCmlmIGI6Zm9ydHJhbl9kaWFsZWN0ID09ICJ1bmtub3duIgogICIgc2V0IGI6Zm9ydHJhbl9kaWFsZWN0IGZyb20gZGlyZWN0aXZlIGluIGZpcnN0IHRocmVlIGxpbmVzIG9mIGZpbGUKICBsZXQgYjpmb3J0cmFuX3JldHlwZSA9IGdldGxpbmUoMSkuIiAiLmdldGxpbmUoMikuIiAiLmdldGxpbmUoMykKICBpZiBiOmZvcnRyYW5fcmV0eXBlID1+ICdcPGZvcnRyYW5fZGlhbGVjdFxzKj1ccypGXD4nCiAgICBsZXQgYjpmb3J0cmFuX2RpYWxlY3QgPSAiRiIKICBlbHNlaWYgYjpmb3J0cmFuX3JldHlwZSA9fiAnXDxmb3J0cmFuX2RpYWxlY3Rccyo9XHMqZWxmXD4nCiAgICBsZXQgYjpmb3J0cmFuX2RpYWxlY3QgPSAiZWxmIgogIGVsc2VpZiBiOmZvcnRyYW5fcmV0eXBlID1+ICdcPGZvcnRyYW5fZGlhbGVjdFxzKj1ccypmOTBcPicKICAgIGxldCBiOmZvcnRyYW5fZGlhbGVjdCA9ICJmOTAiCiAgZWxzZWlmIGI6Zm9ydHJhbl9yZXR5cGUgPX4gJ1w8Zm9ydHJhbl9kaWFsZWN0XHMqPVxzKmY5NVw+JwogICAgbGV0IGI6Zm9ydHJhbl9kaWFsZWN0ID0gImY5NSIKICBlbHNlaWYgYjpmb3J0cmFuX3JldHlwZSA9fiAnXDxmb3J0cmFuX2RpYWxlY3Rccyo9XHMqZjc3XD4nCiAgICBsZXQgYjpmb3J0cmFuX2RpYWxlY3QgPSAiZjc3IgogIGVsc2UKICAgICIgbm8gZGlyZWN0aXZlIGZvdW5kLCBzbyBhc3N1bWUgZjk1CiAgICBsZXQgYjpmb3J0cmFuX2RpYWxlY3QgPSAiZjk1IgogIGVuZGlmCiAgdW5sZXQgYjpmb3J0cmFuX3JldHlwZQplbmRpZgoKIiBDaG9vc2UgYmV0d2VlbiBmaXhlZCBhbmQgZnJlZSBzb3VyY2UgZm9ybSBpZiB0aGlzIGhhc24ndCBiZWVuIGRvbmUgeWV0CmlmICFleGlzdHMoImI6Zm9ydHJhbl9maXhlZF9zb3VyY2UiKQogIGlmIGI6Zm9ydHJhbl9kaWFsZWN0ID09ICJlbGYiIHx8IGI6Zm9ydHJhbl9kaWFsZWN0ID09ICJGIgogICAgIiBlbGYgYW5kIEYgcmVxdWlyZSBmcmVlIHNvdXJjZSBmb3JtCiAgICBsZXQgYjpmb3J0cmFuX2ZpeGVkX3NvdXJjZSA9IDAKICBlbHNlaWYgYjpmb3J0cmFuX2RpYWxlY3QgPT0gImY3NyIKICAgICIgZjc3IHJlcXVpcmVzIGZpeGVkIHNvdXJjZSBmb3JtCiAgICBsZXQgYjpmb3J0cmFuX2ZpeGVkX3NvdXJjZSA9IDEKICBlbHNlaWYgZXhpc3RzKCJmb3J0cmFuX2ZyZWVfc291cmNlIikKICAgICIgVXNlciBndWFyYW50ZWVzIGZyZWUgc291cmNlIGZvcm0gZm9yIGFsbCBmOTAgYW5kIGY5NSBmaWxlcwogICAgbGV0IGI6Zm9ydHJhbl9maXhlZF9zb3VyY2UgPSAwCiAgZWxzZWlmIGV4aXN0cygiZm9ydHJhbl9maXhlZF9zb3VyY2UiKQogICAgIiBVc2VyIGd1YXJhbnRlZXMgZml4ZWQgc291cmNlIGZvcm0gZm9yIGFsbCBmOTAgYW5kIGY5NSBmaWxlcwogICAgbGV0IGI6Zm9ydHJhbl9maXhlZF9zb3VyY2UgPSAxCiAgZWxzZQogICAgIiBmOTAgYW5kIGY5NSBhbGxvdyBib3RoIGZpeGVkIGFuZCBmcmVlIHNvdXJjZSBmb3JtLgogICAgIiBBc3N1bWUgZml4ZWQgc291cmNlIGZvcm0gdW5sZXNzIHNpZ25zIG9mIGZyZWUgc291cmNlIGZvcm0KICAgICIgYXJlIGRldGVjdGVkIGluIHRoZSBmaXJzdCBmaXZlIGNvbHVtbnMgb2YgdGhlIGZpcnN0IGI6bG1heCBsaW5lcy4KICAgICIgRGV0ZWN0aW9uIGJlY29tZXMgbW9yZSBhY2N1cmF0ZSBhbmQgdGltZS1jb25zdW1pbmcgaWYgbW9yZSBsaW5lcwogICAgIiBhcmUgY2hlY2tlZC4gSW5jcmVhc2UgdGhlIGxpbWl0IGJlbG93IGlmIHlvdSBrZWVwIGxvdHMgb2YgY29tbWVudHMgYXQKICAgICIgdGhlIHZlcnkgdG9wIG9mIGVhY2ggZmlsZSBhbmQgeW91IGhhdmUgYSBmYXN0IGNvbXB1dGVyLgogICAgbGV0IGI6bG1heCA9IDI1MAogICAgaWYgKCBiOmxtYXggPiBsaW5lKCIkIikgKQogICAgICBsZXQgYjpsbWF4ID0gbGluZSgiJCIpCiAgICBlbmRpZgogICAgbGV0IGI6Zm9ydHJhbl9maXhlZF9zb3VyY2UgPSAxCiAgICBsZXQgYjpsbj0xCiAgICB3aGlsZSBiOmxuIDw9IGI6bG1heAogICAgICBsZXQgYjp0ZXN0ID0gc3RycGFydChnZXRsaW5lKGI6bG4pLDAsNSkKICAgICAgaWYgYjp0ZXN0WzBdICF+ICdbQ2MqISNdJyAmJiBiOnRlc3QgIX4gJ14gXCtbISNdJyAmJiBiOnRlc3QgPX4gJ1teIDAtOVx0XScKCWxldCBiOmZvcnRyYW5fZml4ZWRfc291cmNlID0gMAoJYnJlYWsKICAgICAgZW5kaWYKICAgICAgbGV0IGI6bG4gPSBiOmxuICsgMQogICAgZW5kd2hpbGUKICAgIHVubGV0IGI6bG1heCBiOmxuIGI6dGVzdAogIGVuZGlmCmVuZGlmCgpzeW4gY2FzZSBpZ25vcmUKCmlmIGI6Zm9ydHJhbl9kaWFsZWN0ICE9PyAiZjc3IgogIGlmIHZlcnNpb24gPj0gNjAwCiAgICBpZiBiOmZvcnRyYW5fZml4ZWRfc291cmNlID09IDEKICAgICAgc3luIG1hdGNoIGZvcnRyYW5Db25zdHJ1Y3ROYW1lCSJeXHNcezYsfVx6c1xhXHcqXHplXHMqOiIKICAgIGVsc2UKICAgICAgc3luIG1hdGNoIGZvcnRyYW5Db25zdHJ1Y3ROYW1lCSJeXHMqXHpzXGFcdypcemVccyo6IgogICAgZW5kaWYKICAgIGlmIGV4aXN0cygiZm9ydHJhbl9tb3JlX3ByZWNpc2UiKQogICAgICBzeW4gbWF0Y2ggZm9ydHJhbkNvbnN0cnVjdE5hbWUgIlwoXDxlbmRccypkb1xzXCtcKVxAPD1cYVx3KiIKICAgICAgc3luIG1hdGNoIGZvcnRyYW5Db25zdHJ1Y3ROYW1lICJcKFw8ZW5kXHMqaWZcc1wrXClcQDw9XGFcdyoiCiAgICAgIHN5biBtYXRjaCBmb3J0cmFuQ29uc3RydWN0TmFtZSAiXChcPGVuZFxzKnNlbGVjdFxzXCtcKVxAPD1cYVx3KiIKICAgIGVuZGlmCiAgZWxzZQogICAgaWYgYjpmb3J0cmFuX2ZpeGVkX3NvdXJjZSA9PSAxCiAgICAgIHN5biBtYXRjaCBmb3J0cmFuQ29uc3RydWN0TmFtZQkiXlxzXHs2LH1cYVx3KlxzKjoiCiAgICBlbHNlCiAgICAgIHN5biBtYXRjaCBmb3J0cmFuQ29uc3RydWN0TmFtZQkiXlxzKlxhXHcqXHMqOiIKICAgIGVuZGlmCiAgZW5kaWYKZW5kaWYKCnN5biBtYXRjaCAgIGZvcnRyYW5Vbml0SGVhZGVyCSJcPGVuZFw+IgoKc3luIG1hdGNoIGZvcnRyYW5UeXBlCQkiXDxjaGFyYWN0ZXJcPiIKc3luIG1hdGNoIGZvcnRyYW5UeXBlCQkiXDxjb21wbGV4XD4iCnN5biBtYXRjaCBmb3J0cmFuVHlwZQkJIlw8aW50ZWdlclw+IgpzeW4ga2V5d29yZCBmb3J0cmFuVHlwZQkJaW50cmluc2ljCnN5biBtYXRjaCBmb3J0cmFuVHlwZQkJIlw8aW1wbGljaXRcPiIKc3luIGtleXdvcmQgZm9ydHJhblN0cnVjdHVyZQlkaW1lbnNpb24Kc3luIGtleXdvcmQgZm9ydHJhblN0b3JhZ2VDbGFzcwlwYXJhbWV0ZXIgc2F2ZQpzeW4gbWF0Y2ggZm9ydHJhblVuaXRIZWFkZXIJIlw8c3Vicm91dGluZVw+IgpzeW4ga2V5d29yZCBmb3J0cmFuQ2FsbAkJY2FsbApzeW4gbWF0Y2ggZm9ydHJhblVuaXRIZWFkZXIJIlw8ZnVuY3Rpb25cPiIKc3luIG1hdGNoIGZvcnRyYW5Vbml0SGVhZGVyCSJcPHByb2dyYW1cPiIKc3luIGtleXdvcmQgZm9ydHJhbktleXdvcmQJcmV0dXJuIHN0b3AKc3luIGtleXdvcmQgZm9ydHJhbkNvbmRpdGlvbmFsCWVsc2UgdGhlbgpzeW4gbWF0Y2ggZm9ydHJhbkNvbmRpdGlvbmFsCSJcPGlmXD4iCnN5biBtYXRjaCBmb3J0cmFuUmVwZWF0CQkiXDxkb1w+IgoKc3luIGtleXdvcmQgZm9ydHJhblRvZG8JCWNvbnRhaW5lZCB0b2RvIGZpeG1lCgoiQ2F0Y2ggZXJyb3JzIGNhdXNlZCBieSB0b28gbWFueSByaWdodCBwYXJlbnRoZXNlcwpzeW4gcmVnaW9uIGZvcnRyYW5QYXJlbiB0cmFuc3BhcmVudCBzdGFydD0iKCIgZW5kPSIpIiBjb250YWlucz1BTExCVVQsZm9ydHJhblBhcmVuRXJyb3IsQGZvcnRyYW5Db21tZW50R3JvdXAsY0luY2x1ZGVkLEBzcGVsbApzeW4gbWF0Y2ggIGZvcnRyYW5QYXJlbkVycm9yICAgIikiCgpzeW4gbWF0Y2ggZm9ydHJhbk9wZXJhdG9yCSJcLlxzKm5cPWVxdlxzKlwuIgpzeW4gbWF0Y2ggZm9ydHJhbk9wZXJhdG9yCSJcLlxzKlwoYW5kXHxvclx8bm90XClccypcLiIKc3luIG1hdGNoIGZvcnRyYW5PcGVyYXRvcgkiXCgrXHwtXHwvXHxcKlwpIgoKc3luIG1hdGNoIGZvcnRyYW5Cb29sZWFuCSJcLlxzKlwodHJ1ZVx8ZmFsc2VcKVxzKlwuIgoKc3luIGtleXdvcmQgZm9ydHJhblJlYWRXcml0ZQliYWNrc3BhY2UgY2xvc2UgZW5kZmlsZSBpbnF1aXJlIG9wZW4gcHJpbnQgcmVhZCByZXdpbmQgd3JpdGUKCiJJZiB0YWJzIGFyZSBhbGxvd2VkIHRoZW4gdGhlIGxlZnQgbWFyZ2luIGNoZWNrcyBkbyBub3Qgd29yawppZiBleGlzdHMoImZvcnRyYW5faGF2ZV90YWJzIikKICBzeW4gbWF0Y2ggZm9ydHJhblRhYgkJIlx0IiAgdHJhbnNwYXJlbnQKZWxzZQogIHN5biBtYXRjaCBmb3J0cmFuVGFiCQkiXHQiCmVuZGlmCgpzeW4ga2V5d29yZCBmb3J0cmFuSU8JCWFjY2VzcyBibGFuayBkaXJlY3QgZXhpc3QgZmlsZSBmbXQgZm9ybSBmb3JtYXR0ZWQgaW9zdGF0IG5hbWUgbmFtZWQgbmV4dHJlYyBudW1iZXIgb3BlbmVkIHJlYyByZWNsIHNlcXVlbnRpYWwgc3RhdHVzIHVuZm9ybWF0dGVkIHVuaXQKCnN5biBrZXl3b3JkIGZvcnRyYW42NkludHJpbnNpYwkJYWxvZyBhbG9nMTAgYW1heDAgYW1heDEgYW1pbjAgYW1pbjEgYW1vZCBjYWJzIGNjb3MgY2V4cCBjbG9nIGNzaW4gY3NxcnQgZGFicyBkYWNvcyBkYXNpbiBkYXRhbiBkYXRhbjIgZGNvcyBkY29zaCBkZGltIGRleHAgZGludCBkbG9nIGRsb2cxMCBkbWF4MSBkbWluMSBkbW9kIGRuaW50IGRzaWduIGRzaW4gZHNpbmggZHNxcnQgZHRhbiBkdGFuaCBmbG9hdCBpYWJzIGlkaW0gaWRpbnQgaWRuaW50IGlmaXggaXNpZ24gbWF4MCBtYXgxIG1pbjAgbWluMSBzbmdsCgoiIEludHJpbnNpY3MgcHJvdmlkZWQgYnkgc29tZSB2ZW5kb3JzCnN5biBrZXl3b3JkIGZvcnRyYW5FeHRyYUludHJpbnNpYwlhbGdhbWEgY2RhYnMgY2Rjb3MgY2RleHAgY2Rsb2cgY2RzaW4gY2RzcXJ0IGNxYWJzIGNxY29zIGNxZXhwIGNxbG9nIGNxc2luIGNxc3FydCBkY21wbHggZGNvbmpnIGRlcmYgZGVyZmMgZGZsb2F0IGRnYW1tYSBkaW1hZyBkbGdhbWEgZXJmIGVyZmMgZ2FtbWEgaXFpbnQgcWFicyBxYWNvcyBxYXNpbiBxYXRhbiBxYXRhbjIgcWNtcGx4IHFjb25qZyBxY29zIHFjb3NoIHFkaW0gcWVyZiBxZXJmYyBxZXhwIHFnYW1tYSBxaW1hZyBxbGdhbWEgcWxvZyBxbG9nMTAgcW1heDEgcW1pbjEgcW1vZCBxbmludCBxc2lnbiBxc2luIHFzaW5oIHFzcXJ0IHF0YW4gcXRhbmgKCnN5biBrZXl3b3JkIGZvcnRyYW43N0ludHJpbnNpYwlhYnMgYWNvcyBhaW1hZyBhaW50IGFuaW50IGFzaW4gYXRhbiBhdGFuMiBjaGFyIGNtcGx4IGNvbmpnIGNvcyBjb3NoIGV4cCBpY2hhciBpbmRleCBpbnQgbG9nIGxvZzEwIG1heCBtaW4gbmludCBzaWduIHNpbiBzaW5oIHNxcnQgdGFuIHRhbmgKc3luIG1hdGNoIGZvcnRyYW43N0ludHJpbnNpYwkiXDxsZW5ccypbKCxdIm1lPXMrMwpzeW4gbWF0Y2ggZm9ydHJhbjc3SW50cmluc2ljCSJcPHJlYWxccyooIm1lPXMrNApzeW4gbWF0Y2ggZm9ydHJhblR5cGUJCSJcPGltcGxpY2l0XHNcK3JlYWwiCnN5biBtYXRjaCBmb3J0cmFuVHlwZQkJIl5ccypyZWFsXD4iCnN5biBtYXRjaCBmb3J0cmFuOTBJbnRyaW5zaWMJIlw8bG9naWNhbFxzKigibWU9cys3CnN5biBtYXRjaCBmb3J0cmFuVHlwZQkJIlw8aW1wbGljaXRcc1wrbG9naWNhbCIKc3luIG1hdGNoIGZvcnRyYW5UeXBlCQkiXlxzKmxvZ2ljYWxcPiIKCiJOdW1iZXJzIG9mIHZhcmlvdXMgc29ydHMKIiBJbnRlZ2VycwpzeW4gbWF0Y2ggZm9ydHJhbk51bWJlcglkaXNwbGF5ICJcPFxkXCtcKF9cYVx3KlwpXD1cPiIKIiBmbG9hdGluZyBwb2ludCBudW1iZXIsIHdpdGhvdXQgYSBkZWNpbWFsIHBvaW50CnN5biBtYXRjaCBmb3J0cmFuRmxvYXROb0RlYwlkaXNwbGF5CSJcPFxkXCtbZGVxXVstK11cPVxkXCtcKF9cYVx3KlwpXD1cPiIKIiBmbG9hdGluZyBwb2ludCBudW1iZXIsIHN0YXJ0aW5nIHdpdGggYSBkZWNpbWFsIHBvaW50CnN5biBtYXRjaCBmb3J0cmFuRmxvYXRJbmlEZWMJZGlzcGxheQkiXC5cZFwrXChbZGVxXVstK11cPVxkXCtcKVw9XChfXGFcdypcKVw9XD4iCiIgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLCBubyBkaWdpdHMgYWZ0ZXIgZGVjaW1hbApzeW4gbWF0Y2ggZm9ydHJhbkZsb2F0RW5kRGVjCWRpc3BsYXkJIlw8XGRcK1wuXChbZGVxXVstK11cPVxkXCtcKVw9XChfXGFcdypcKVw9XD4iCiIgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLCBEIG9yIFEgZXhwb25lbnRzCnN5biBtYXRjaCBmb3J0cmFuRmxvYXRERXhwCWRpc3BsYXkJIlw8XGRcK1wuXGRcK1woW2RxXVstK11cPVxkXCtcKVw9XChfXGFcdypcKVw9XD4iCiIgZmxvYXRpbmcgcG9pbnQgbnVtYmVyCnN5biBtYXRjaCBmb3J0cmFuRmxvYXQJZGlzcGxheQkiXDxcZFwrXC5cZFwrXChlWy0rXVw9XGRcK1wpXD1cKF9cYVx3KlwpXD1cPiIKIiBOdW1iZXJzIGluIGZvcm1hdHMKc3luIG1hdGNoIGZvcnRyYW5Gb3JtYXRTcGVjCWRpc3BsYXkJIlxkKmZcZFwrXC5cZFwrIgpzeW4gbWF0Y2ggZm9ydHJhbkZvcm1hdFNwZWMJZGlzcGxheQkiXGQqZVtzbl1cPVxkXCtcLlxkXCtcKGVcZCtcPlwpXD0iCnN5biBtYXRjaCBmb3J0cmFuRm9ybWF0U3BlYwlkaXNwbGF5CSJcZCpcKGRcfHFcfGdcKVxkXCtcLlxkXCtcKGVcZCtcKVw9IgpzeW4gbWF0Y2ggZm9ydHJhbkZvcm1hdFNwZWMJZGlzcGxheQkiXGRcK3hcPiIKIiBUaGUgbmV4dCBtYXRjaCBjYW5ub3QgYmUgdXNlZCBiZWNhdXNlIGl0IHdvdWxkIHBpY2sgdXAgaWRlbnRpZmllcnMgYXMgd2VsbAoiIHN5biBtYXRjaCBmb3J0cmFuRm9ybWF0U3BlYwlkaXNwbGF5CSJcPFwoYVx8aVwpXGRcKyIKCiIgTnVtYmVycyBhcyBsYWJlbHMKc3luIG1hdGNoIGZvcnRyYW5MYWJlbE51bWJlcglkaXNwbGF5CSJeXGRcezEsNX1ccyJtZT1lLTEKc3luIG1hdGNoIGZvcnRyYW5MYWJlbE51bWJlcglkaXNwbGF5CSJeIFxkXHsxLDR9XHMibXM9cysxLG1lPWUtMQpzeW4gbWF0Y2ggZm9ydHJhbkxhYmVsTnVtYmVyCWRpc3BsYXkJIl4gIFxkXHsxLDN9XHMibXM9cysyLG1lPWUtMQpzeW4gbWF0Y2ggZm9ydHJhbkxhYmVsTnVtYmVyCWRpc3BsYXkJIl4gICBcZFxkXD1ccyJtcz1zKzMsbWU9ZS0xCnN5biBtYXRjaCBmb3J0cmFuTGFiZWxOdW1iZXIJZGlzcGxheQkiXiAgICBcZFxzIm1zPXMrNCxtZT1lLTEKCmlmIHZlcnNpb24gPj0gNjAwICYmIGV4aXN0cygiZm9ydHJhbl9tb3JlX3ByZWNpc2UiKQogICIgTnVtYmVycyBhcyB0YXJnZXRzCiAgc3luIG1hdGNoIGZvcnRyYW5UYXJnZXQJZGlzcGxheQkiXChcPGlmXHMqKC5cKylccypcKVxAPD1cKFxkXCtccyosXHMqXClcezJ9XGRcK1w+IgogIHN5biBtYXRjaCBmb3J0cmFuVGFyZ2V0CWRpc3BsYXkJIlwoXDxkb1xzXCtcKVxAPD1cZFwrXD4iCiAgc3luIG1hdGNoIGZvcnRyYW5UYXJnZXQJZGlzcGxheQkiXChcPGdvXHMqdG9ccyooXD1cKVxAPD1cKFxkXCtccyosXHMqXCkqXGRcK1w+IgplbmRpZgoKc3luIGtleXdvcmQgZm9ydHJhblR5cGVFeAlleHRlcm5hbApzeW4ga2V5d29yZCBmb3J0cmFuSU9FeAkJZm9ybWF0CnN5biBrZXl3b3JkIGZvcnRyYW5LZXl3b3JkRXgJY29udGludWUKc3luIG1hdGNoIGZvcnRyYW5LZXl3b3JkRXgJIlw8Z29ccyp0b1w+IgpzeW4gcmVnaW9uIGZvcnRyYW5TdHJpbmdFeAlzdGFydD0rJysgZW5kPSsnKyBjb250YWlucz1mb3J0cmFuQ29udGludWVNYXJrLGZvcnRyYW5MZWZ0TWFyZ2luLGZvcnRyYW5TZXJpYWxOdW1iZXIKc3luIGtleXdvcmQgZm9ydHJhbjc3SW50cmluc2ljRXgJZGltIGxnZSBsZ3QgbGxlIGxsdCBtb2QKc3luIGtleXdvcmQgZm9ydHJhbktleXdvcmRPYglhc3NpZ24gcGF1c2UgdG8KCmlmIGI6Zm9ydHJhbl9kaWFsZWN0ICE9ICJmNzciCgogIHN5biBtYXRjaCBmb3J0cmFuVHlwZSAgICAgICAgICJcPHR5cGVcPiIKICBzeW4ga2V5d29yZCBmb3J0cmFuVHlwZQlub25lCgogIHN5biBrZXl3b3JkIGZvcnRyYW5TdHJ1Y3R1cmUJcHJpdmF0ZSBwdWJsaWMgaW50ZW50IG9wdGlvbmFsCiAgc3luIGtleXdvcmQgZm9ydHJhblN0cnVjdHVyZQlwb2ludGVyIHRhcmdldCBhbGxvY2F0YWJsZQogIHN5biBrZXl3b3JkIGZvcnRyYW5TdG9yYWdlQ2xhc3MJaW4gb3V0CiAgc3luIG1hdGNoIGZvcnRyYW5TdG9yYWdlQ2xhc3MJIlw8a2luZFxzKj0ibWU9cys0CiAgc3luIG1hdGNoIGZvcnRyYW5TdG9yYWdlQ2xhc3MJIlw8bGVuXHMqPSJtZT1zKzMKCiAgc3luIG1hdGNoIGZvcnRyYW5Vbml0SGVhZGVyCSJcPG1vZHVsZVw+IgogIHN5biBrZXl3b3JkIGZvcnRyYW5Vbml0SGVhZGVyCXVzZSBvbmx5IGNvbnRhaW5zCiAgc3luIGtleXdvcmQgZm9ydHJhblVuaXRIZWFkZXIJcmVzdWx0IG9wZXJhdG9yIGFzc2lnbm1lbnQKICBzeW4gbWF0Y2ggZm9ydHJhblVuaXRIZWFkZXIJIlw8aW50ZXJmYWNlXD4iCiAgc3luIG1hdGNoIGZvcnRyYW5Vbml0SGVhZGVyCSJcPHJlY3Vyc2l2ZVw+IgogIHN5biBrZXl3b3JkIGZvcnRyYW5LZXl3b3JkCWFsbG9jYXRlIGRlYWxsb2NhdGUgbnVsbGlmeSBjeWNsZSBleGl0CiAgc3luIG1hdGNoIGZvcnRyYW5Db25kaXRpb25hbAkiXDxzZWxlY3RcPiIKICBzeW4ga2V5d29yZCBmb3J0cmFuQ29uZGl0aW9uYWwJY2FzZSBkZWZhdWx0IHdoZXJlIGVsc2V3aGVyZQoKICBzeW4gbWF0Y2ggZm9ydHJhbk9wZXJhdG9yCSJcKFwoPlx8PFwpPVw9XHw9PVx8Lz1cfD1cKSIKICBzeW4gbWF0Y2ggZm9ydHJhbk9wZXJhdG9yCSI9PiIKCiAgc3luIHJlZ2lvbiBmb3J0cmFuU3RyaW5nCXN0YXJ0PSsiKyBlbmQ9KyIrCWNvbnRhaW5zPWZvcnRyYW5MZWZ0TWFyZ2luLGZvcnRyYW5Db250aW51ZU1hcmssZm9ydHJhblNlcmlhbE51bWJlcgogIHN5biBrZXl3b3JkIGZvcnRyYW5JTwkJcGFkIHBvc2l0aW9uIGFjdGlvbiBkZWxpbSByZWFkd3JpdGUKICBzeW4ga2V5d29yZCBmb3J0cmFuSU8JCWVvciBhZHZhbmNlIG5tbAoKICBzeW4ga2V5d29yZCBmb3J0cmFuOTBJbnRyaW5zaWMJYWRqdXN0bCBhZGp1c3RyIGFsbCBhbGxvY2F0ZWQgYW55IGFzc29jaWF0ZWQgYml0X3NpemUgYnRlc3QgY2VpbGluZyBjb3VudCBjc2hpZnQgZGF0ZV9hbmRfdGltZSBkaWdpdHMgZG90X3Byb2R1Y3QgZW9zaGlmdCBlcHNpbG9uIGV4cG9uZW50IGZsb29yIGZyYWN0aW9uIGh1Z2UgaWFuZCBpYmNsciBpYml0cyBpYnNldCBpZW9yIGlvciBpc2hmdCBpc2hmdGMgbGJvdW5kIGxlbl90cmltIG1hdG11bCBtYXhleHBvbmVudCBtYXhsb2MgbWF4dmFsIG1lcmdlIG1pbmV4cG9uZW50IG1pbmxvYyBtaW52YWwgbW9kdWxvIG12Yml0cyBuZWFyZXN0IHBhY2sgcHJlY2lzaW9uIHByZXNlbnQgcHJvZHVjdCByYWRpeCByYW5kb21fbnVtYmVyIHJhbmRvbV9zZWVkIHJhbmdlIHJlcGVhdCByZXNoYXBlIHJyc3BhY2luZwogIHN5biBrZXl3b3JkIGZvcnRyYW45MEludHJpbnNpYwlzY2FsZSBzY2FuIHNlbGVjdGVkX2ludF9raW5kIHNlbGVjdGVkX3JlYWxfa2luZCBzZXRfZXhwb25lbnQgc2hhcGUgc2l6ZSBzcGFjaW5nIHNwcmVhZCBzdW0gc3lzdGVtX2Nsb2NrIHRpbnkgdHJhbnNwb3NlIHRyaW0gdWJvdW5kIHVucGFjayB2ZXJpZnkKICBzeW4gbWF0Y2ggZm9ydHJhbjkwSW50cmluc2ljCQkiXDxub3RcPlwoXHMqXC5cKVxAISJtZT1zKzMKICBzeW4gbWF0Y2ggZm9ydHJhbjkwSW50cmluc2ljCSJcPGtpbmRcPlxzKlsoLF0ibWU9cys0CgogIHN5biBtYXRjaCAgZm9ydHJhblVuaXRIZWFkZXIJIlw8ZW5kXHMqZnVuY3Rpb24iCiAgc3luIG1hdGNoICBmb3J0cmFuVW5pdEhlYWRlcgkiXDxlbmRccyppbnRlcmZhY2UiCiAgc3luIG1hdGNoICBmb3J0cmFuVW5pdEhlYWRlcgkiXDxlbmRccyptb2R1bGUiCiAgc3luIG1hdGNoICBmb3J0cmFuVW5pdEhlYWRlcgkiXDxlbmRccypwcm9ncmFtIgogIHN5biBtYXRjaCAgZm9ydHJhblVuaXRIZWFkZXIJIlw8ZW5kXHMqc3Vicm91dGluZSIKICBzeW4gbWF0Y2ggIGZvcnRyYW5SZXBlYXQJIlw8ZW5kXHMqZG8iCiAgc3luIG1hdGNoICBmb3J0cmFuQ29uZGl0aW9uYWwJIlw8ZW5kXHMqd2hlcmUiCiAgc3luIG1hdGNoICBmb3J0cmFuQ29uZGl0aW9uYWwJIlw8c2VsZWN0XHMqY2FzZSIKICBzeW4gbWF0Y2ggIGZvcnRyYW5Db25kaXRpb25hbAkiXDxlbmRccypzZWxlY3QiCiAgc3luIG1hdGNoICBmb3J0cmFuVHlwZQkiXDxlbmRccyp0eXBlIgogIHN5biBtYXRjaCAgZm9ydHJhblR5cGUJIlw8aW5ccypvdXQiCgogIHN5biBrZXl3b3JkIGZvcnRyYW5Vbml0SGVhZGVyRXgJcHJvY2VkdXJlCiAgc3luIGtleXdvcmQgZm9ydHJhbklPRXgJCW5hbWVsaXN0CiAgc3luIGtleXdvcmQgZm9ydHJhbkNvbmRpdGlvbmFsRXgJd2hpbGUKICBzeW4ga2V5d29yZCBmb3J0cmFuOTBJbnRyaW5zaWNFeAlhY2hhciBpYWNoYXIgdHJhbnNmZXIKCiAgc3luIGtleXdvcmQgZm9ydHJhbkluY2x1ZGUJCWluY2x1ZGUKICBzeW4ga2V5d29yZCBmb3J0cmFuOTBTdG9yYWdlQ2xhc3NSCXNlcXVlbmNlCmVuZGlmCgpzeW4gbWF0Y2ggICBmb3J0cmFuQ29uZGl0aW9uYWwJIlw8ZW5kXHMqaWYiCnN5biBtYXRjaCAgIGZvcnRyYW5JTwkJY29udGFpbnM9Zm9ydHJhbk9wZXJhdG9yICJcPGVcKG5kXHxyclwpXHMqPVxzKlxkXCsiCnN5biBtYXRjaCAgIGZvcnRyYW5Db25kaXRpb25hbAkiXDxlbHNlXHMqaWYiCgpzeW4ga2V5d29yZCBmb3J0cmFuVW5pdEhlYWRlclIJZW50cnkKc3luIG1hdGNoIGZvcnRyYW5UeXBlUgkJZGlzcGxheSAiZG91YmxlXHNcK3ByZWNpc2lvbiIKc3luIG1hdGNoIGZvcnRyYW5UeXBlUgkJZGlzcGxheSAiZG91YmxlXHNcK2NvbXBsZXgiCnN5biBtYXRjaCBmb3J0cmFuVW5pdEhlYWRlclIJZGlzcGxheSAiYmxvY2tcc1wrZGF0YSIKc3luIGtleXdvcmQgZm9ydHJhblN0b3JhZ2VDbGFzc1IJY29tbW9uIGVxdWl2YWxlbmNlIGRhdGEKc3luIGtleXdvcmQgZm9ydHJhbjc3SW50cmluc2ljUglkYmxlIGRwcm9kCnN5biBtYXRjaCAgIGZvcnRyYW43N09wZXJhdG9yUgkiXC5ccypbZ2xdW2V0XVxzKlwuIgpzeW4gbWF0Y2ggICBmb3J0cmFuNzdPcGVyYXRvclIJIlwuXHMqXChlcVx8bmVcKVxzKlwuIgoKaWYgYjpmb3J0cmFuX2RpYWxlY3QgPT0gImY5NSIgfHwgYjpmb3J0cmFuX2RpYWxlY3QgPT0gIkYiCiAgc3luIGtleXdvcmQgZm9ydHJhblJlcGVhdAkJZm9yYWxsCiAgc3luIG1hdGNoIGZvcnRyYW5SZXBlYXQJCSJcPGVuZFxzKmZvcmFsbCIKICBzeW4ga2V5d29yZCBmb3J0cmFuOTVJbnRyaW5zaWMJbnVsbCBjcHVfdGltZQogIHN5biBtYXRjaCBmb3J0cmFuVHlwZQkJCSJcPGVsZW1lbnRhbFw+IgogIHN5biBtYXRjaCBmb3J0cmFuVHlwZQkJCSJcPHB1cmVcPiIKICBpZiBleGlzdHMoImZvcnRyYW5fbW9yZV9wcmVjaXNlIikKICAgIHN5biBtYXRjaCBmb3J0cmFuQ29uc3RydWN0TmFtZSAiXChcPGVuZFxzKmZvcmFsbFxzXCtcKVxAPD1cYVx3Klw+IgogIGVuZGlmCmVuZGlmCgpzeW4gY2x1c3RlciBmb3J0cmFuQ29tbWVudEdyb3VwIGNvbnRhaW5zPWZvcnRyYW5Ub2RvCgppZiAoYjpmb3J0cmFuX2ZpeGVkX3NvdXJjZSA9PSAxKQogIGlmICFleGlzdHMoImZvcnRyYW5faGF2ZV90YWJzIikKICAgICJGbGFnIGl0ZW1zIGJleW9uZCBjb2x1bW4gNzIKICAgIHN5biBtYXRjaCBmb3J0cmFuU2VyaWFsTnVtYmVyCWV4Y2x1ZGVubCAiXi5cezczLH0kImxjPTcyCiAgICAiRmxhZyBsZWZ0IG1hcmdpbiBlcnJvcnMKICAgIHN5biBtYXRjaCBmb3J0cmFuTGFiZWxFcnJvcgkiXi5cey0sNH1bXjAtOSBdIiBjb250YWlucz1mb3J0cmFuVGFiCiAgICBzeW4gbWF0Y2ggZm9ydHJhbkxhYmVsRXJyb3IJIl4uXHs0fVxkXFMiCiAgZW5kaWYKICBzeW4gbWF0Y2ggZm9ydHJhbkNvbW1lbnQJCWV4Y2x1ZGVubCAiXlshYypdLiokIiBjb250YWlucz1AZm9ydHJhbkNvbW1lbnRHcm91cAogIHN5biBtYXRjaCBmb3J0cmFuTGVmdE1hcmdpbgkJdHJhbnNwYXJlbnQgIl4gXHs1fSIKICBzeW4gbWF0Y2ggZm9ydHJhbkNvbnRpbnVlTWFyawkJZGlzcGxheSAiXi5cezV9XFMibGM9NQplbHNlCiAgc3luIG1hdGNoIGZvcnRyYW5Db250aW51ZU1hcmsJCWRpc3BsYXkgIiYiCmVuZGlmCgppZiBiOmZvcnRyYW5fZGlhbGVjdCAhPSAiZjc3IgogIHN5biBtYXRjaCBmb3J0cmFuQ29tbWVudAlleGNsdWRlbmwgIiEuKiQiIGNvbnRhaW5zPUBmb3J0cmFuQ29tbWVudEdyb3VwLEBzcGVsbAplbmRpZgoKImNwcCBpcyBvZnRlbiB1c2VkIHdpdGggRm9ydHJhbgpzeW4gbWF0Y2gJY1ByZVByb2MJCSJeXHMqI1xzKlwoZGVmaW5lXHxpZmRlZlwpXD4uKiIKc3luIG1hdGNoCWNQcmVQcm9jCQkiXlxzKiNccypcKGVsaWZcfGlmXClcPi4qIgpzeW4gbWF0Y2gJY1ByZVByb2MJCSJeXHMqI1xzKlwoaWZuZGVmXHx1bmRlZlwpXD4uKiIKc3luIG1hdGNoCWNQcmVDb25kaXQJCSJeXHMqI1xzKlwoZWxzZVx8ZW5kaWZcKVw+LioiCnN5biByZWdpb24JY0luY2x1ZGVkCWNvbnRhaW5lZCBzdGFydD0rIlteKF0rIHNraXA9K1xcXFxcfFxcIisgZW5kPSsiKyBjb250YWlucz1mb3J0cmFuTGVmdE1hcmdpbixmb3J0cmFuQ29udGludWVNYXJrLGZvcnRyYW5TZXJpYWxOdW1iZXIKc3luIG1hdGNoCWNJbmNsdWRlZAkJY29udGFpbmVkICI8W14+XSo+IgpzeW4gbWF0Y2gJY0luY2x1ZGUJCSJeXHMqI1xzKmluY2x1ZGVcPlxzKlsiPF0iIGNvbnRhaW5zPWNJbmNsdWRlZAoKIlN5bmNocm9uaXNpbmcgbGltaXRzIGFzc3VtZSB0aGF0IGNvbW1lbnQgYW5kIGNvbnRpbnVhdGlvbiBsaW5lcyBhcmUgbm90IG1peGVkCmlmIGV4aXN0cygiZm9ydHJhbl9mb2xkIikgfHwgZXhpc3RzKCJmb3J0cmFuX21vcmVfcHJlY2lzZSIpCiAgc3luIHN5bmMgZnJvbXN0YXJ0CmVsc2VpZiAoYjpmb3J0cmFuX2ZpeGVkX3NvdXJjZSA9PSAwKQogIHN5biBzeW5jIGxpbmVjb250ICImIiBtaW5saW5lcz0yMAplbHNlCiAgc3luIHN5bmMgbWlubGluZXM9MjAKZW5kaWYKCmlmIHZlcnNpb24gPj0gNjAwICYmIGV4aXN0cygiZm9ydHJhbl9mb2xkIikKCiAgaWYgKGI6Zm9ydHJhbl9maXhlZF9zb3VyY2UgPT0gMSkKICAgIHN5biByZWdpb24gZm9ydHJhblByb2dyYW0gdHJhbnNwYXJlbnQgZm9sZCBrZWVwZW5kIHN0YXJ0PSJeXHMqcHJvZ3JhbVxzXCtceihcYVx3KlwpIiBza2lwPSJeXChbIWMqXVx8XHMqI1wpLiokIiBleGNsdWRlbmwgZW5kPSJcPGVuZFxzKlwocHJvZ3JhbVwoXHNcK1x6MVw+XClcPVx8JFwpIiBjb250YWlucz1BTExCVVQsZm9ydHJhbk1vZHVsZQogICAgc3luIHJlZ2lvbiBmb3J0cmFuTW9kdWxlIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBzdGFydD0iXlxzKm1vZHVsZVxzXCtcKHByb2NlZHVyZVwpXEAhXHooXGFcdypcKSIgc2tpcD0iXlwoWyFjKl1cfFxzKiNcKS4qJCIgZXhjbHVkZW5sIGVuZD0iXDxlbmRccypcKG1vZHVsZVwoXHNcK1x6MVw+XClcPVx8JFwpIiBjb250YWlucz1BTExCVVQsZm9ydHJhblByb2dyYW0KICAgIHN5biByZWdpb24gZm9ydHJhbkZ1bmN0aW9uIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBleHRlbmQgc3RhcnQ9Il5ccypcKGVsZW1lbnRhbCBcfHB1cmUgXHxyZWN1cnNpdmUgXClcPVxzKlwoXChcKHJlYWwgXHxpbnRlZ2VyIFx8bG9naWNhbCBcfGNvbXBsZXggXHxkb3VibGUgXHMqcHJlY2lzaW9uIFwpXHMqXCgoXChccypraW5kXHMqPVwpXD1ccypcd1wrXHMqKVwpXD1cKVx8dHlwZVxzXCsoXHMqXHdcK1xzKikgXHxjaGFyYWN0ZXIgXCgoXChccypsZW5ccyo9XClcPVxzKlxkXCtccyopXHwoXChccypraW5kXHMqPVwpXD1ccypcd1wrXHMqKVwpXD1cKVw9XHMqZnVuY3Rpb25cc1wrXHooXGFcdypcKSIgc2tpcD0iXlwoWyFjKl1cfFxzKiNcKS4qJCIgZXhjbHVkZW5sIGVuZD0iXDxlbmRccypcKCRcfGZ1bmN0aW9uXChcc1wrXHoxXD5cKVw9XCkiIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuUHJvZ3JhbSxmb3J0cmFuTW9kdWxlCiAgICBzeW4gcmVnaW9uIGZvcnRyYW5TdWJyb3V0aW5lIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBleHRlbmQgc3RhcnQ9Il5ccypcKGVsZW1lbnRhbCBcfHB1cmUgXHxyZWN1cnNpdmUgXClcPVxzKnN1YnJvdXRpbmVcc1wrXHooXGFcdypcKSIgc2tpcD0iXlwoWyFjKl1cfFxzKiNcKS4qJCIgZXhjbHVkZW5sIGVuZD0iXDxlbmRccypcKCRcfHN1YnJvdXRpbmVcKFxzXCtcejFcPlwpXD1cKSIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Qcm9ncmFtLGZvcnRyYW5Nb2R1bGUKICAgIHN5biByZWdpb24gZm9ydHJhbkJsb2NrRGF0YSB0cmFuc3BhcmVudCBmb2xkIGtlZXBlbmQgc3RhcnQ9Ilw8YmxvY2tccypkYXRhXHNcK1x6KFxhXHcqXCkiIHNraXA9Il5cKFshYypdXHxccyojXCkuKiQiIGV4Y2x1ZGVubCBlbmQ9Ilw8ZW5kXHMqXCgkXHxibG9ja1xzKmRhdGFcKFxzXCtcejFcPlwpXD1cKSIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Qcm9ncmFtLGZvcnRyYW5Nb2R1bGUsZm9ydHJhblN1YnJvdXRpbmUsZm9ydHJhbkZ1bmN0aW9uLGZvcnRyYW43N0xvb3AsZm9ydHJhbkNhc2UsZm9ydHJhbjkwTG9vcCxmb3J0cmFuSWZCbG9jawogICAgc3luIHJlZ2lvbiBmb3J0cmFuSW50ZXJmYWNlIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBleHRlbmQgc3RhcnQ9Il5ccyppbnRlcmZhY2VcPiIgc2tpcD0iXlwoWyFjKl1cfFxzKiNcKS4qJCIgZXhjbHVkZW5sIGVuZD0iXDxlbmRccyppbnRlcmZhY2VcPiIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Qcm9ncmFtLGZvcnRyYW5Nb2R1bGUsZm9ydHJhbjc3TG9vcCxmb3J0cmFuQ2FzZSxmb3J0cmFuOTBMb29wLGZvcnRyYW5JZkJsb2NrCiAgZWxzZQogICAgc3luIHJlZ2lvbiBmb3J0cmFuUHJvZ3JhbSB0cmFuc3BhcmVudCBmb2xkIGtlZXBlbmQgc3RhcnQ9Il5ccypwcm9ncmFtXHNcK1x6KFxhXHcqXCkiIHNraXA9Il5ccypbISNdLiokIiBleGNsdWRlbmwgZW5kPSJcPGVuZFxzKlwocHJvZ3JhbVwoXHNcK1x6MVw+XClcPVx8JFwpIiBjb250YWlucz1BTExCVVQsZm9ydHJhbk1vZHVsZQogICAgc3luIHJlZ2lvbiBmb3J0cmFuTW9kdWxlIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBzdGFydD0iXlxzKm1vZHVsZVxzXCtcKHByb2NlZHVyZVwpXEAhXHooXGFcdypcKSIgc2tpcD0iXlxzKlshI10uKiQiIGV4Y2x1ZGVubCBlbmQ9Ilw8ZW5kXHMqXChtb2R1bGVcKFxzXCtcejFcPlwpXD1cfCRcKSIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Qcm9ncmFtCiAgICBzeW4gcmVnaW9uIGZvcnRyYW5GdW5jdGlvbiB0cmFuc3BhcmVudCBmb2xkIGtlZXBlbmQgZXh0ZW5kIHN0YXJ0PSJeXHMqXChlbGVtZW50YWwgXHxwdXJlIFx8cmVjdXJzaXZlIFwpXD1ccypcKFwoXChyZWFsIFx8aW50ZWdlciBcfGxvZ2ljYWwgXHxjb21wbGV4IFx8ZG91YmxlIFxzKnByZWNpc2lvbiBcKVxzKlwoKFwoXHMqa2luZFxzKj1cKVw9XHMqXHdcK1xzKilcKVw9XClcfHR5cGVcc1wrKFxzKlx3XCtccyopIFx8Y2hhcmFjdGVyIFwoKFwoXHMqbGVuXHMqPVwpXD1ccypcZFwrXHMqKVx8KFwoXHMqa2luZFxzKj1cKVw9XHMqXHdcK1xzKilcKVw9XClcPVxzKmZ1bmN0aW9uXHNcK1x6KFxhXHcqXCkiIHNraXA9Il5ccypbISNdLiokIiBleGNsdWRlbmwgZW5kPSJcPGVuZFxzKlwoJFx8ZnVuY3Rpb25cKFxzXCtcejFcPlwpXD1cKSIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Qcm9ncmFtLGZvcnRyYW5Nb2R1bGUKICAgIHN5biByZWdpb24gZm9ydHJhblN1YnJvdXRpbmUgdHJhbnNwYXJlbnQgZm9sZCBrZWVwZW5kIGV4dGVuZCBzdGFydD0iXlxzKlwoZWxlbWVudGFsIFx8cHVyZSBcfHJlY3Vyc2l2ZSBcKVw9XHMqc3Vicm91dGluZVxzXCtceihcYVx3KlwpIiBza2lwPSJeXHMqWyEjXS4qJCIgZXhjbHVkZW5sIGVuZD0iXDxlbmRccypcKCRcfHN1YnJvdXRpbmVcKFxzXCtcejFcPlwpXD1cKSIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Qcm9ncmFtLGZvcnRyYW5Nb2R1bGUKICAgIHN5biByZWdpb24gZm9ydHJhbkJsb2NrRGF0YSB0cmFuc3BhcmVudCBmb2xkIGtlZXBlbmQgc3RhcnQ9Ilw8YmxvY2tccypkYXRhXHNcK1x6KFxhXHcqXCkiIHNraXA9Il5ccypbISNdLiokIiBleGNsdWRlbmwgZW5kPSJcPGVuZFxzKlwoJFx8YmxvY2tccypkYXRhXChcc1wrXHoxXD5cKVw9XCkiIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuUHJvZ3JhbSxmb3J0cmFuTW9kdWxlLGZvcnRyYW5TdWJyb3V0aW5lLGZvcnRyYW5GdW5jdGlvbixmb3J0cmFuNzdMb29wLGZvcnRyYW5DYXNlLGZvcnRyYW45MExvb3AsZm9ydHJhbklmQmxvY2sKICAgIHN5biByZWdpb24gZm9ydHJhbkludGVyZmFjZSB0cmFuc3BhcmVudCBmb2xkIGtlZXBlbmQgZXh0ZW5kIHN0YXJ0PSJeXHMqaW50ZXJmYWNlXD4iIHNraXA9Il5ccypbISNdLiokIiBleGNsdWRlbmwgZW5kPSJcPGVuZFxzKmludGVyZmFjZVw+IiBjb250YWlucz1BTExCVVQsZm9ydHJhblByb2dyYW0sZm9ydHJhbk1vZHVsZSxmb3J0cmFuNzdMb29wLGZvcnRyYW5DYXNlLGZvcnRyYW45MExvb3AsZm9ydHJhbklmQmxvY2sKICBlbmRpZgoKICBpZiBleGlzdHMoImZvcnRyYW5fZm9sZF9jb25kaXRpb25hbHMiKQogICAgaWYgKGI6Zm9ydHJhbl9maXhlZF9zb3VyY2UgPT0gMSkKICAgICAgc3luIHJlZ2lvbiBmb3J0cmFuNzdMb29wIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBzdGFydD0iXDxkb1xzXCtceihcZFwrXCkiIGVuZD0iXlxzKlx6MVw+IiBjb250YWlucz1BTExCVVQsZm9ydHJhblVuaXRIZWFkZXIsZm9ydHJhblN0cnVjdHVyZSxmb3J0cmFuU3RvcmFnZUNsYXNzLGZvcnRyYW5UeXBlLGZvcnRyYW5Qcm9ncmFtLGZvcnRyYW5Nb2R1bGUsZm9ydHJhblN1YnJvdXRpbmUsZm9ydHJhbkZ1bmN0aW9uLGZvcnRyYW5CbG9ja0RhdGEKICAgICAgc3luIHJlZ2lvbiBmb3J0cmFuOTBMb29wIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBleHRlbmQgc3RhcnQ9IlwoXDxlbmRcc1wrXClcQDwhXDxkb1woXHNcK1xhXHxccyokXCkiIHNraXA9Il5cKFshYypdXHxccyojXCkuKiQiIGV4Y2x1ZGVubCBlbmQ9Ilw8ZW5kXHMqZG9cPiIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Vbml0SGVhZGVyLGZvcnRyYW5TdHJ1Y3R1cmUsZm9ydHJhblN0b3JhZ2VDbGFzcyxmb3J0cmFuVHlwZSxmb3J0cmFuUHJvZ3JhbSxmb3J0cmFuTW9kdWxlLGZvcnRyYW5TdWJyb3V0aW5lLGZvcnRyYW5GdW5jdGlvbixmb3J0cmFuQmxvY2tEYXRhCiAgICAgIHN5biByZWdpb24gZm9ydHJhbklmQmxvY2sgdHJhbnNwYXJlbnQgZm9sZCBrZWVwZW5kIGV4dGVuZCBzdGFydD0iXChcPGVcKG5kXHxsc2VcKVxzXCtcKVxAPCFcPGlmXHMqKC5cKylccyp0aGVuXD4iIHNraXA9Il5cKFshYypdXHxccyojXCkuKiQiIGVuZD0iXDxlbmRccyppZlw+IiBjb250YWlucz1BTExCVVQsZm9ydHJhblVuaXRIZWFkZXIsZm9ydHJhblN0cnVjdHVyZSxmb3J0cmFuU3RvcmFnZUNsYXNzLGZvcnRyYW5UeXBlLGZvcnRyYW5Qcm9ncmFtLGZvcnRyYW5Nb2R1bGUsZm9ydHJhblN1YnJvdXRpbmUsZm9ydHJhbkZ1bmN0aW9uLGZvcnRyYW5CbG9ja0RhdGEKICAgICAgc3luIHJlZ2lvbiBmb3J0cmFuQ2FzZSB0cmFuc3BhcmVudCBmb2xkIGtlZXBlbmQgZXh0ZW5kIHN0YXJ0PSJcPHNlbGVjdFxzKmNhc2VcPiIgc2tpcD0iXlwoWyFjKl1cfFxzKiNcKS4qJCIgZW5kPSJcPGVuZFxzKnNlbGVjdFw+IiBjb250YWlucz1BTExCVVQsZm9ydHJhblVuaXRIZWFkZXIsZm9ydHJhblN0cnVjdHVyZSxmb3J0cmFuU3RvcmFnZUNsYXNzLGZvcnRyYW5UeXBlLGZvcnRyYW5Qcm9ncmFtLGZvcnRyYW5Nb2R1bGUsZm9ydHJhblN1YnJvdXRpbmUsZm9ydHJhbkZ1bmN0aW9uLGZvcnRyYW5CbG9ja0RhdGEKICAgIGVsc2UKICAgICAgc3luIHJlZ2lvbiBmb3J0cmFuNzdMb29wIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBzdGFydD0iXDxkb1xzXCtceihcZFwrXCkiIGVuZD0iXlxzKlx6MVw+IiBjb250YWlucz1BTExCVVQsZm9ydHJhblVuaXRIZWFkZXIsZm9ydHJhblN0cnVjdHVyZSxmb3J0cmFuU3RvcmFnZUNsYXNzLGZvcnRyYW5UeXBlLGZvcnRyYW5Qcm9ncmFtLGZvcnRyYW5Nb2R1bGUsZm9ydHJhblN1YnJvdXRpbmUsZm9ydHJhbkZ1bmN0aW9uLGZvcnRyYW5CbG9ja0RhdGEKICAgICAgc3luIHJlZ2lvbiBmb3J0cmFuOTBMb29wIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBleHRlbmQgc3RhcnQ9IlwoXDxlbmRcc1wrXClcQDwhXDxkb1woXHNcK1xhXHxccyokXCkiIHNraXA9Il5ccypbISNdLiokIiBleGNsdWRlbmwgZW5kPSJcPGVuZFxzKmRvXD4iIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuVW5pdEhlYWRlcixmb3J0cmFuU3RydWN0dXJlLGZvcnRyYW5TdG9yYWdlQ2xhc3MsZm9ydHJhblR5cGUsZm9ydHJhblByb2dyYW0sZm9ydHJhbk1vZHVsZSxmb3J0cmFuU3Vicm91dGluZSxmb3J0cmFuRnVuY3Rpb24sZm9ydHJhbkJsb2NrRGF0YQogICAgICBzeW4gcmVnaW9uIGZvcnRyYW5JZkJsb2NrIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBleHRlbmQgc3RhcnQ9IlwoXDxlXChuZFx8bHNlXClcc1wrXClcQDwhXDxpZlxzKiguXCspXHMqdGhlblw+IiBza2lwPSJeXHMqWyEjXS4qJCIgZW5kPSJcPGVuZFxzKmlmXD4iIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuVW5pdEhlYWRlcixmb3J0cmFuU3RydWN0dXJlLGZvcnRyYW5TdG9yYWdlQ2xhc3MsZm9ydHJhblR5cGUsZm9ydHJhblByb2dyYW0sZm9ydHJhbk1vZHVsZSxmb3J0cmFuU3Vicm91dGluZSxmb3J0cmFuRnVuY3Rpb24sZm9ydHJhbkJsb2NrRGF0YQogICAgICBzeW4gcmVnaW9uIGZvcnRyYW5DYXNlIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBleHRlbmQgc3RhcnQ9Ilw8c2VsZWN0XHMqY2FzZVw+IiBza2lwPSJeXHMqWyEjXS4qJCIgZW5kPSJcPGVuZFxzKnNlbGVjdFw+IiBjb250YWlucz1BTExCVVQsZm9ydHJhblVuaXRIZWFkZXIsZm9ydHJhblN0cnVjdHVyZSxmb3J0cmFuU3RvcmFnZUNsYXNzLGZvcnRyYW5UeXBlLGZvcnRyYW5Qcm9ncmFtLGZvcnRyYW5Nb2R1bGUsZm9ydHJhblN1YnJvdXRpbmUsZm9ydHJhbkZ1bmN0aW9uLGZvcnRyYW5CbG9ja0RhdGEKICAgIGVuZGlmCiAgZW5kaWYKCiAgaWYgZXhpc3RzKCJmb3J0cmFuX2ZvbGRfbXVsdGlsaW5lY29tbWVudHMiKQogICAgaWYgKGI6Zm9ydHJhbl9maXhlZF9zb3VyY2UgPT0gMSkKICAgICAgc3luIG1hdGNoIGZvcnRyYW5NdWx0aUxpbmVDb21tZW50cyB0cmFuc3BhcmVudCBmb2xkICJcKF5bIWMqXS4qXChcblx8XCUkXClcKVx7NCx9IiBjb250YWlucz1BTExCVVQsZm9ydHJhbk11bHRpQ29tbWVudExpbmVzCiAgICBlbHNlCiAgICAgIHN5biBtYXRjaCBmb3J0cmFuTXVsdGlMaW5lQ29tbWVudHMgdHJhbnNwYXJlbnQgZm9sZCAiXCheXHMqIS4qXChcblx8XCUkXClcKVx7NCx9IiBjb250YWlucz1BTExCVVQsZm9ydHJhbk11bHRpQ29tbWVudExpbmVzCiAgICBlbmRpZgogIGVuZGlmCmVuZGlmCgoiIERlZmluZSB0aGUgZGVmYXVsdCBoaWdobGlnaHRpbmcuCiIgRm9yIHZlcnNpb24gNS43IGFuZCBlYXJsaWVyOiBvbmx5IHdoZW4gbm90IGRvbmUgYWxyZWFkeQoiIEZvciB2ZXJzaW9uIDUuOCBhbmQgbGF0ZXI6IG9ubHkgd2hlbiBhbiBpdGVtIGRvZXNuJ3QgaGF2ZSBoaWdobGlnaHRpbmcgeWV0CmlmIHZlcnNpb24gPj0gNTA4IHx8ICFleGlzdHMoImRpZF9mb3J0cmFuX3N5bl9pbml0cyIpCiAgaWYgdmVyc2lvbiA8IDUwOAogICAgbGV0IGRpZF9mb3J0cmFuX3N5bl9pbml0cyA9IDEKICAgIGNvbW1hbmQgLW5hcmdzPSsgSGlMaW5rIGhpIGxpbmsgPGFyZ3M+CiAgZWxzZQogICAgY29tbWFuZCAtbmFyZ3M9KyBIaUxpbmsgaGkgZGVmIGxpbmsgPGFyZ3M+CiAgZW5kaWYKCiAgIiBUaGUgZGVmYXVsdCBoaWdobGlnaHRpbmcgZGlmZmVycyBmb3IgZWFjaCBkaWFsZWN0LgogICIgVHJhbnNwYXJlbnQgZ3JvdXBzOgogICIgZm9ydHJhblBhcmVuLCBmb3J0cmFuTGVmdE1hcmdpbgogICIgZm9ydHJhblByb2dyYW0sIGZvcnRyYW5Nb2R1bGUsIGZvcnRyYW5TdWJyb3V0aW5lLCBmb3J0cmFuRnVuY3Rpb24sCiAgIiBmb3J0cmFuQmxvY2tEYXRhCiAgIiBmb3J0cmFuNzdMb29wLCBmb3J0cmFuOTBMb29wLCBmb3J0cmFuSWZCbG9jaywgZm9ydHJhbkNhc2UKICAiIGZvcnRyYW5NdWx0aUNvbW1lbnRMaW5lcwogIEhpTGluayBmb3J0cmFuS2V5d29yZCAJS2V5d29yZAogIEhpTGluayBmb3J0cmFuQ29uc3RydWN0TmFtZQlJZGVudGlmaWVyCiAgSGlMaW5rIGZvcnRyYW5Db25kaXRpb25hbAlDb25kaXRpb25hbAogIEhpTGluayBmb3J0cmFuUmVwZWF0CQlSZXBlYXQKICBIaUxpbmsgZm9ydHJhblRvZG8JCVRvZG8KICBIaUxpbmsgZm9ydHJhbkNvbnRpbnVlTWFyawlUb2RvCiAgSGlMaW5rIGZvcnRyYW5TdHJpbmcJCVN0cmluZwogIEhpTGluayBmb3J0cmFuTnVtYmVyCQlOdW1iZXIKICBIaUxpbmsgZm9ydHJhbk9wZXJhdG9yCU9wZXJhdG9yCiAgSGlMaW5rIGZvcnRyYW5Cb29sZWFuCQlCb29sZWFuCiAgSGlMaW5rIGZvcnRyYW5MYWJlbEVycm9yCUVycm9yCiAgSGlMaW5rIGZvcnRyYW5PYnNvbGV0ZQlUb2RvCiAgSGlMaW5rIGZvcnRyYW5UeXBlCQlUeXBlCiAgSGlMaW5rIGZvcnRyYW5TdHJ1Y3R1cmUJVHlwZQogIEhpTGluayBmb3J0cmFuU3RvcmFnZUNsYXNzCVN0b3JhZ2VDbGFzcwogIEhpTGluayBmb3J0cmFuQ2FsbAkJZm9ydHJhblVuaXRIZWFkZXIKICBIaUxpbmsgZm9ydHJhblVuaXRIZWFkZXIJZm9ydHJhblByZUNvbmRpdAogIEhpTGluayBmb3J0cmFuUmVhZFdyaXRlCUtleXdvcmQKICBIaUxpbmsgZm9ydHJhbklPCQlLZXl3b3JkCiAgSGlMaW5rIGZvcnRyYW45NUludHJpbnNpYwlmb3J0cmFuOTBJbnRyaW5zaWMKICBIaUxpbmsgZm9ydHJhbjc3SW50cmluc2ljCWZvcnRyYW45MEludHJpbnNpYwogIEhpTGluayBmb3J0cmFuOTBJbnRyaW5zaWMJRnVuY3Rpb24KCiAgaWYgKCBiOmZvcnRyYW5fZGlhbGVjdCA9PSAiZWxmIiB8fCBiOmZvcnRyYW5fZGlhbGVjdCA9PSAiRiIgKQogICAgSGlMaW5rIGZvcnRyYW5LZXl3b3JkT2IJZm9ydHJhbk9ic29sZXRlCiAgICBIaUxpbmsgZm9ydHJhbjY2SW50cmluc2ljCWZvcnRyYW5PYnNvbGV0ZQogICAgSGlMaW5rIGZvcnRyYW43N0ludHJpbnNpY1IJZm9ydHJhbk9ic29sZXRlCiAgICBIaUxpbmsgZm9ydHJhblVuaXRIZWFkZXJSCWZvcnRyYW5PYnNvbGV0ZQogICAgSGlMaW5rIGZvcnRyYW5UeXBlUgkJZm9ydHJhbk9ic29sZXRlCiAgICBIaUxpbmsgZm9ydHJhblN0b3JhZ2VDbGFzc1IJZm9ydHJhbk9ic29sZXRlCiAgICBIaUxpbmsgZm9ydHJhbjkwU3RvcmFnZUNsYXNzUglmb3J0cmFuT2Jzb2xldGUKICAgIEhpTGluayBmb3J0cmFuNzdPcGVyYXRvclIJZm9ydHJhbk9ic29sZXRlCiAgICBIaUxpbmsgZm9ydHJhbkluY2x1ZGUJZm9ydHJhbk9ic29sZXRlCiAgZWxzZQogICAgSGlMaW5rIGZvcnRyYW5LZXl3b3JkT2IJZm9ydHJhbktleXdvcmQKICAgIEhpTGluayBmb3J0cmFuNjZJbnRyaW5zaWMJZm9ydHJhbjkwSW50cmluc2ljCiAgICBIaUxpbmsgZm9ydHJhbjc3SW50cmluc2ljUglmb3J0cmFuOTBJbnRyaW5zaWMKICAgIEhpTGluayBmb3J0cmFuVW5pdEhlYWRlclIJZm9ydHJhblByZUNvbmRpdAogICAgSGlMaW5rIGZvcnRyYW5UeXBlUgkJZm9ydHJhblR5cGUKICAgIEhpTGluayBmb3J0cmFuU3RvcmFnZUNsYXNzUglmb3J0cmFuU3RvcmFnZUNsYXNzCiAgICBIaUxpbmsgZm9ydHJhbjc3T3BlcmF0b3JSCWZvcnRyYW5PcGVyYXRvcgogICAgSGlMaW5rIGZvcnRyYW5JbmNsdWRlCUluY2x1ZGUKICAgIEhpTGluayBmb3J0cmFuOTBTdG9yYWdlQ2xhc3NSCWZvcnRyYW5TdG9yYWdlQ2xhc3MKICBlbmRpZgoKICBpZiAoIGI6Zm9ydHJhbl9kaWFsZWN0ID09ICJGIiApCiAgICBIaUxpbmsgZm9ydHJhbkxhYmVsTnVtYmVyCWZvcnRyYW5PYnNvbGV0ZQogICAgSGlMaW5rIGZvcnRyYW5UYXJnZXQJZm9ydHJhbk9ic29sZXRlCiAgICBIaUxpbmsgZm9ydHJhbkZvcm1hdFNwZWMJZm9ydHJhbk9ic29sZXRlCiAgICBIaUxpbmsgZm9ydHJhbkZsb2F0REV4cAlmb3J0cmFuT2Jzb2xldGUKICAgIEhpTGluayBmb3J0cmFuRmxvYXROb0RlYwlmb3J0cmFuT2Jzb2xldGUKICAgIEhpTGluayBmb3J0cmFuRmxvYXRJbmlEZWMJZm9ydHJhbk9ic29sZXRlCiAgICBIaUxpbmsgZm9ydHJhbkZsb2F0RW5kRGVjCWZvcnRyYW5PYnNvbGV0ZQogICAgSGlMaW5rIGZvcnRyYW5UeXBlRXgJZm9ydHJhbk9ic29sZXRlCiAgICBIaUxpbmsgZm9ydHJhbklPRXgJCWZvcnRyYW5PYnNvbGV0ZQogICAgSGlMaW5rIGZvcnRyYW5LZXl3b3JkRXgJZm9ydHJhbk9ic29sZXRlCiAgICBIaUxpbmsgZm9ydHJhblN0cmluZ0V4CWZvcnRyYW5PYnNvbGV0ZQogICAgSGlMaW5rIGZvcnRyYW43N0ludHJpbnNpY0V4CWZvcnRyYW5PYnNvbGV0ZQogICAgSGlMaW5rIGZvcnRyYW5Vbml0SGVhZGVyRXgJZm9ydHJhbk9ic29sZXRlCiAgICBIaUxpbmsgZm9ydHJhbkNvbmRpdGlvbmFsRXgJZm9ydHJhbk9ic29sZXRlCiAgICBIaUxpbmsgZm9ydHJhbjkwSW50cmluc2ljRXgJZm9ydHJhbk9ic29sZXRlCiAgZWxzZQogICAgSGlMaW5rIGZvcnRyYW5MYWJlbE51bWJlcglTcGVjaWFsCiAgICBIaUxpbmsgZm9ydHJhblRhcmdldAlTcGVjaWFsCiAgICBIaUxpbmsgZm9ydHJhbkZvcm1hdFNwZWMJSWRlbnRpZmllcgogICAgSGlMaW5rIGZvcnRyYW5GbG9hdERFeHAJZm9ydHJhbkZsb2F0CiAgICBIaUxpbmsgZm9ydHJhbkZsb2F0Tm9EZWMJZm9ydHJhbkZsb2F0CiAgICBIaUxpbmsgZm9ydHJhbkZsb2F0SW5pRGVjCWZvcnRyYW5GbG9hdAogICAgSGlMaW5rIGZvcnRyYW5GbG9hdEVuZERlYwlmb3J0cmFuRmxvYXQKICAgIEhpTGluayBmb3J0cmFuVHlwZUV4CWZvcnRyYW5UeXBlCiAgICBIaUxpbmsgZm9ydHJhbklPRXgJCWZvcnRyYW5JTwogICAgSGlMaW5rIGZvcnRyYW5LZXl3b3JkRXgJZm9ydHJhbktleXdvcmQKICAgIEhpTGluayBmb3J0cmFuU3RyaW5nRXgJZm9ydHJhblN0cmluZwogICAgSGlMaW5rIGZvcnRyYW43N0ludHJpbnNpY0V4CWZvcnRyYW45MEludHJpbnNpYwogICAgSGlMaW5rIGZvcnRyYW5Vbml0SGVhZGVyRXgJZm9ydHJhblVuaXRIZWFkZXIKICAgIEhpTGluayBmb3J0cmFuQ29uZGl0aW9uYWxFeAlmb3J0cmFuQ29uZGl0aW9uYWwKICAgIEhpTGluayBmb3J0cmFuOTBJbnRyaW5zaWNFeAlmb3J0cmFuOTBJbnRyaW5zaWMKICBlbmRpZgoKICBIaUxpbmsgZm9ydHJhbkZsb2F0CQlGbG9hdAogIEhpTGluayBmb3J0cmFuUHJlQ29uZGl0CVByZUNvbmRpdAogIEhpTGluayBmb3J0cmFuSW5jbHVkZQkJSW5jbHVkZQogIEhpTGluayBjSW5jbHVkZWQJCWZvcnRyYW5TdHJpbmcKICBIaUxpbmsgY0luY2x1ZGUJCUluY2x1ZGUKICBIaUxpbmsgY1ByZVByb2MJCVByZVByb2MKICBIaUxpbmsgY1ByZUNvbmRpdAkJUHJlQ29uZGl0CiAgSGlMaW5rIGZvcnRyYW5QYXJlbkVycm9yCUVycm9yCiAgSGlMaW5rIGZvcnRyYW5Db21tZW50CQlDb21tZW50CiAgSGlMaW5rIGZvcnRyYW5TZXJpYWxOdW1iZXIJVG9kbwogIEhpTGluayBmb3J0cmFuVGFiCQlFcnJvcgogICIgVmVuZG9yIGV4dGVuc2lvbnMKICBIaUxpbmsgZm9ydHJhbkV4dHJhSW50cmluc2ljCUZ1bmN0aW9uCgogIGRlbGNvbW1hbmQgSGlMaW5rCmVuZGlmCgpsZXQgYjpjdXJyZW50X3N5bnRheCA9ICJmb3J0cmFuIgoKIiB2aW06IHRzPTggdHc9MTMyCg==